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