布尔变量解释

问题描述:

我对这段Java代码有疑问。 (是的,我是一名初学者)。代码有效,我只是有点困惑。此代码检查人员和汽车数组,以查找它是否有空座位,这是tryToAdd方法的作用。然后它会将该人添加到该车。我的问题是关于布尔值。它看起来添加设置为false。然后在for循环中说:只要添加的是真的..循环。所以,这个循环似乎永远不会运行。布尔变量解释

public void loadPassengers() { 
    for (Person p : people) { 
     boolean added = false; 
     for (int i = 0; !added && i < cars.size(); i++) { 
      added = cars.get(i).tryToAdd(p); 
     } 
    } 
} 
+0

检查as long as *added* is false, keep iterating, and try to perform' added = cars.get(i).tryToAdd(p); ,设定值(NOT)运算符,它会使added = false为true,如果added的值为true,那么循环永远不会运行 – 2014-12-08 04:47:21

+0

for循环中的条件表示:只要添加** false **(和“我'小于汽车的数量),做循环。 – 2014-12-08 04:47:26

+0

你怎么没看到!运算符在循环中添加变量之前 – 2014-12-08 05:19:20

然后在for循环,它说:只要添加的是真实的

其实,它说的是相反的。再看看:

for (int i = 0; !added && i < cars.size(); i++) 

!是 '逻辑逆'(或not)运算符。所以这个声明实际上是说'只要我们没有加入,就停留在for循环中,我就小于汽车的大小'。

据推测,在某一点cars.get(i).tryToAdd(p)将返回true,for循环将终止。或者你用完cars。无论哪种方式循环运行至少一次迭代(只要你有至少一辆车)。

!与布尔值相反。

您正在执行一个循环来说除非添加一个人(tryToAdd(p)返回true)执行循环。并且i < cars.size()称汽车应该有座位添加人员。

在您的代码中添加了解释。

public void loadPassengers() { 
    boolean added; //Declaring added variable outside for loop for memory management 
    for (Person p : people) { //Execute loop for each person 
     added = false; //setting added value to false for each person 

     // unless person is added execute the loop and also check for the car size. 
     for (int i = 0; (added == false && i < cars.size()); i++) { // added == false or !added is same 
      added = cars.get(i).tryToAdd(p); // tryToAdd(p) return true to confirm that a person is added 
     } 
    } 
} 
+0

我认为这回答了我的问题。 – 2014-12-10 02:54:06

你很困惑。其实,

if(!added) 
{ 
    //code 
} 

这个条件等于 “!”

if(added == false) 
{ 
    //code 
} 

所以你的逻辑说,加入到“true'`