Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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_If Statement_Recursion_Boolean - Fatal编程技术网

在Java中,布尔值是局部的、开放的和递归的

在Java中,布尔值是局部的、开放的和递归的,java,if-statement,recursion,boolean,Java,If Statement,Recursion,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); /

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

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语句之外,当它说ifdone做某事时,它是done是FALSE还是TRUE?在ELSE语句中也是如此!在IF-ELSE语句中声明为真时,是否表示它为假

简单地说,当您使用包含布尔值的IF、IF和ELSE语句时,是否意味着它必须为真

例如:

boolean love = false;
if(love) do this;
现在,这是否意味着当爱是虚假的时候就要这样做呢!运算符协商布尔值。这意味着如果布尔变量为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
但是有一个!它将被执行:

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
在另一种情况下,不会执行此操作:

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的官方文档:

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

谢谢你,这么说是因为完成了,当它说完成了它是在block或if else语句之外,那么根据你的说法,它是否意味着完成了是错误的。我真的不明白你想用你的评论告诉我什么,对不起。如果完成了{grid[row][column]=PATH;只有当done为true时,语句才会执行,对吗?但不用担心,我明天将与老师一起解析整个代码。在else块中,那里完成的所有操作都是false,对吗?此代码不会按原样运行,因为存在{找不到什么地方了…@OblTobl别担心,我明天会和我的老师一起解决的。谢谢你的帮助。看看这个例子有没有布尔人