2017-05-02 1 views
0

たとえば、checkGameStatus()メソッドを使用して、移動するたびにゲームが終了しているかどうかを調べることができます。完全なプログラムへwhileループがあるところでmainから後で呼び出すことができるメソッドでbreak文を使用できますか?

 if((arr[0][0]=='X' && arr[0][1]=='X' && arr[0][2]=='X')|| 
     (arr[1][0]=='X' && arr[1][1]=='X' && arr[1][2]=='X')|| 
     (arr[2][0]=='X' && arr[2][1]=='X' && arr[2][2]=='X')|| 
     (arr[0][0]=='X' && arr[1][0]=='X' && arr[2][0]=='X')|| 
     (arr[0][1]=='X' && arr[1][1]=='X' && arr[2][1]=='X')|| 
     (arr[0][2]=='X' && arr[1][2]=='X' && arr[2][2]=='X')|| 
     (arr[0][0]=='X' && arr[1][1]=='X' && arr[2][2]=='X')|| 
     (arr[0][2]=='X' && arr[1][1]=='X' && arr[2][0]=='X') 
     ){ 
      System.out.println("X wins!"); 
      break; 
     } 
    else if((arr[0][0]=='O' && arr[0][1]=='O' && arr[0][2]=='O')|| 
     (arr[1][0]=='O' && arr[1][1]=='O' && arr[1][2]=='O')|| 
     (arr[2][0]=='O' && arr[2][1]=='O' && arr[2][2]=='O')|| 
     (arr[0][0]=='O' && arr[1][0]=='O' && arr[2][0]=='O')|| 
     (arr[0][1]=='O' && arr[1][1]=='O' && arr[2][1]=='O')|| 
     (arr[0][2]=='O' && arr[1][2]=='O' && arr[2][2]=='O')|| 
     (arr[0][0]=='O' && arr[1][1]=='O' && arr[2][2]=='O')|| 
     (arr[0][2]=='O' && arr[1][1]=='O' && arr[2][0]=='O') 
     ){ 
      System.out.println("O wins!"); 
      break; 
     } 
    else if(arr[0][0]!='_' && arr[0][1]!='_' && arr[0][2]!='_' 
    && arr[1][0]!='_' && arr[1][1]!='_' && arr[1][2]!='_' 
    && arr[2][0]!='_' && arr[2][1]!='_' && arr[2][2]!='_'){ 
     System.out.println("Draw!"); 
     break; 

パス:Tic-Tac-Toe for 2 players

+0

この作業は他にはありません –

+1

[JLS](https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.15) breakステートメントは、すぐに囲むメソッド**またはイニシャライザ*の最も内側にある 'switch'、' while'、 'do'または' for'ステートメント**に制御を移そうとします。つまり、メソッドから「中断する」ことはできません。そのためには、例外が必要です。 – Andreas

+0

そのためには、例外またはリターンが必要です –

答えて

0

「リターン」キーワードはメソッドから終了するために使用され、「ブレークは」メソッドには適用されません。あなたのcheckGameStatusのために

()、あなたはブール値を返すと、ループに分割することを確認するために試すことができます。

0

ラスベガスで起こるラスベガスにとどまる何...

私はそれで意味:ブレーク文は常に「ローカル」であり、「最も内側へ"それぞれのスイッ​​チは、を囲み、のステートメントを囲みます。

は、呼び出すメソッドでが壊れてしまうことを心配する必要はありません。

メソッドを呼び出すと、呼び出し元への影響は(そう、周囲のオブジェクトの状態を変更する)方法のフィールドの内容を変更するようなものだろうことができます唯一の方法。またはメソッドに与えられたオブジェクトの状態をパラメータとして変更することによって実行できます。

0

"Break"は "If-Statements"に影響しません。 "break"は "switch"、 "for"、 "while"、 "do"と共に使用されます。

条件が真の場合、 "のSystem.out.println()は、" 実行されます。プログラムはあなたの "If-Statements"の後のコードで続行されます。

関連する問題