1

我是一个初学者,并且对这段代码感到非常困惑,因为布尔值“完成”会发生什么。我花了两个小时来理解这段代码,我很沮丧。

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;
}

首先,“完成”被声明为 FALSE。然后它移动到 if 和 else 语句并成为它的本地语句。现在,在 IF 和 ELSE 语句之外,当它说 if(done) 做某事时,当 done 是 FALSE 还是 TRUE?同样,在 ELSE 语句中, (!done) 是否意味着它是 FALSE,因为它在 IF ELSE 语句中被声明为 TRUE?

简而言之,当您使用带有布尔值的 IF、IF 和 ELSE 语句时,是否意味着它必须为 TRUE?

例如:

boolean love = false;
if(love) do this;

现在,当爱是虚假的时候,这是否意味着“这样做”?

4

1 回答 1

0

!操作员协商布尔值。true这意味着如果布尔变量为 ,则语句变为false。因此,对于您的示例,这将不会被执行:

boolean love = false;
if(love) do this; //not executed

但是使用 a!它会被执行:

boolean love = false;
if(!love) do this; //executed

在另一种情况下,这不会被执行:

boolean love = true;
if(!love) do this; //not executed

编辑:
有关 if-Statements 的进一步解释,您可能会查看 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;
}
于 2013-04-22T06:01:03.850 回答