我是一个初学者,并且对这段代码感到困惑,因为 boolean 值“完成”会发生什么。我花了两个小时来理解这段代码,我感到非常沮丧。
public boolean traverse(int row, int column){
boolean done = false;
if(row == grid.length-1 && column == grid[0].length-1)
done = true;
else{
done = traverse(row + 1. column); //down
if(!done) done = traverse (row, column+1)//right
}
if (done) grid[row][column] = PATH;
}
return done;
}
首先,“done”被声明为 FALSE。然后它移动到 if 和 else 语句并成为它的本地语句。现在,在 IF 和 ELSE 语句之外,当它说 if(done) 做某事时,它的“done”是 FALSE 还是 TRUE?另外,在 ELSE 语句中,(!done) 是否意味着它是 FALSE,因为它在 IF ELSE 语句中被声明为 TRUE?
简单来说,当您使用其中包含 boolean 值的 IF、IF 和 ELSE 语句时,是否意味着它必须为 TRUE?
例如:
boolean love = false;
if(love) do this;
现在,当爱情是虚假的时候,这是否意味着“这样做”?
最佳答案
!
运算符协商 boolean 值。这意味着如果 boolean 变量为 false
,则语句变为 true
。因此,对于您的示例,这不会被执行:
boolean love = false;
if(love) do this; //not executed
但是使用 !
它将被执行:
boolean love = false;
if(!love) do this; //executed
在其他情况下,不会执行:
boolean love = true;
if(!love) do this; //not executed
编辑:
有关 if 语句的进一步解释,您可以查看 oracle 的官方文档:
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html
编辑2:
也许如果您这样编写代码,您会更容易理解:
public boolean traverse(int row, int column){
boolean done = false;
if(row == grid.length-1 && column == grid[0].length-1) {
done = true;
}else{
done = traverse(row + 1. column); //down
if(!done) {
done = traverse (row, column+1)//right
}
}
if (done) {
grid[row][column] = PATH;
}
return done;
}
关于java - Java 中本地、开放和递归时的 boolean 值困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16140279/