Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 布尔变量解释_Java - Fatal编程技术网

Java 布尔变量解释

Java 布尔变量解释,java,Java,我对这段Java代码有一个问题。(是的,我是初学者)。代码是有效的,我只是有点困惑。此代码检查people和cars数组,以查找是否有空座椅,这就是tryToAdd方法所做的。然后,它会将此人添加到该车中。我的问题是关于布尔值的。在我看来,added设置为false。然后在for循环中,它说:只要added为true,就执行循环。因此,循环似乎永远不应该运行 public void loadPassengers() { for (Person p : people) {

我对这段Java代码有一个问题。(是的,我是初学者)。代码是有效的,我只是有点困惑。此代码检查people和cars数组,以查找是否有空座椅,这就是tryToAdd方法所做的。然后,它会将此人添加到该车中。我的问题是关于布尔值的。在我看来,added设置为false。然后在for循环中,它说:只要added为true,就执行循环。因此,循环似乎永远不应该运行

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);
        }
    }
}
public void loadPassengers(){
用于(人员p:人员){
布尔加法=假;
对于(int i=0;!添加了&i
然后在for循环中,它说:只要added是真的

事实上,它说的恰恰相反。再看看:

for (int i = 0; !added && i < cars.size(); i++)
for(int i=0;!添加了&i
是“逻辑逆”(或
不是
)运算符。所以这句话实际上是在说“只要我们没有添加,我就保持在循环中,并且我小于汽车的尺寸”


大概在某个时刻,
cars.get(i).tryToAdd(p)
将返回
true
,for循环将终止。或者你的
车用完了。无论哪种方式,循环至少运行一次迭代(只要您至少有一辆车)。

与布尔值相反

执行循环的意思是,除非添加了一个人(
tryToAdd(p)
,返回true),否则执行循环。还有
i
说汽车应该有座位来增加人

在代码中添加了解释

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
        }
    }
}
public void loadPassengers(){
boolean added;//为内存管理在循环外部声明添加的变量
for(Person p:people){//为每个人执行循环
added=false;//为每个人将added value设置为false
//除非增加人员,否则执行循环并检查车辆尺寸。
对于(inti=0;(added==false&&i
你把它弄糊涂了。其实

if(!added)
{
  //code
}
此条件等于:

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

因此,您的逻辑是,
只要*added*为false,就继续迭代,并尝试执行'added=cars.get(i).tryToAdd(p)设置added to'true'的值`

检查“!”(NOT)循环中的运算符它使added=false变为true,如果added的值为true,那么循环将永远不会运行for循环中的条件是:只要added为false(并且
i
小于车辆数量),就执行循环。你怎么看不到结果呢!在循环中添加变量之前的运算符我想我想得到的是:does!加总平均值加总=真;或者是!加上你的意思!added==false;我想这回答了我的问题。