2017-05-02 3 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' 문은 컨트롤을 ** 둘러싼 메서드 ** 또는 initializer *의 가장 안쪽에있는'switch','while', do 또는 for 문 **에 전달하려고 시도합니다. 다른 말로하면, 당신은 방법에서 벗어날 수 없습니다. 이를 위해서는 예외가 필요합니다. – Andreas

+0

그 때문에 예외 또는 반환이 필요합니다. –

답변

0

'return'키워드는 메소드를 종료하는 데 사용되며 'break'는 메소드에 적용 할 수 없습니다.

checkGameStatus()에 대해서는 부울 값을 반환하고 루프에서 중단되도록 점검 할 수 있습니다.

0

베이거스에서 발생 베이거스에 남아 무엇 ...

내가 그 뜻 : 휴식 문은 항상 "로컬"있다 "안쪽에 "루프는 각각 을 둘러싼 스위치를에 놓습니다.

은 호출하는 메서드에서이 나올 것을 염려 할 필요가 없습니다.

메소드를 호출하는 것이 호출자에게 영향을 미칠 수있는 유일한 방법은 메소드 필드의 내용을 변경 (주변 객체의 상태를 변경)하는 것입니다. 또는 메소드에 주어진 객체의 상태를 매개 변수로 변경합니다.

0

"중단"은 "If 문"에 영향을 미치지 않습니다. "break"는 "switch", "for", "while"및 "do"와 함께 사용됩니다.

조건이 참이면 "System.out.println()"이 실행됩니다. 그런 다음 프로그램은 "If-Statements"다음의 코드에서 계속됩니다.