java - Java 中本地、开放和递归时的 boolean 值困惑

标签 java if-statement recursion boolean

我是一个初学者,并且对这段代码感到困惑,因为 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/

相关文章:

java - 纹理未正确加载 slick java

if-statement - 下面的 tcl 代码会做什么?

sql-server - SQL Server - 从叶子到根的递归 CTE(反向)

java - 在 Udemy 上学习 Java(和编程)。需要帮助理解逻辑

java - 使用类 Calendar 进行调试时的不同结果

java - QueryDSL group by hours in a time range

bash - Shell脚本if语句总是执行else block

powershell - 如何在条件语句中设置变量?

JavaScript:不断改变字符

java - 调用方法 JobRequest.Builder.schedule() 时出现 java.lang.IllegalStateException