1

私は初心者で、ブール値が「完了」するとどうなるかとして、このコードに本当に混乱しています。このコードを理解するのに 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;
}

まず、"done" が FALSE として宣言されます。次に、if ステートメントと else ステートメントに移動し、それにローカルになります。さて、IF ステートメントと ELSE ステートメントの外で、if(done) 何かを実行すると、done が FALSE か TRUE の場合です。また、ELSE ステートメントでは (!done) は、IF ELSE ステートメントで TRUE と宣言されているため、FALSE であることを意味しますか?

簡単に言えば、ブール値を含む 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 ステートメントの詳細については、オラクルの公式ドキュメントを参照してください: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html

EDIT 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 に答える