2014-11-12 5 views
1

do 루프를 사용하여 1-1000 사이의 숫자를 추측하는 아주 기본적인 게임을 만들려고합니다. 모든 것이 효과가 있습니다. 나는 마침내 올바른 추측을 할 때를 제외하고, 나는 여전히 다른 추측을 할 것을 요구받습니다. 그리고 제가 똑같은 추측을 다시 입력 할 때, 프로그램은 가정하는 것처럼 종료됩니다.루핑 관련 Java 도움말

마침내 내 프로그램을 작동 시키려면 추가 추측을해야합니까? 여분의 시간을두고 반복하고 있습니까? 또한 올바른 추측을하면 (컴파일러에서 올바른 것임을 알리는 메시지가 표시됨) 잘못된 추측 (컴파일러에서 잘못되었다고 말함), 올바른 추측을 다시 한 후 프로그램이 종료됩니다 나는 두 번째 정확한 추측을한다.

하단의 두 번째 수행 루프는 내 기본 방법에 넣었습니다. 위의 모든 것은 내가 연극이라고 부르는 방법에 있습니다. 주요 방법은

public static boolean play() 
{ 

    boolean c; 
    int n = 0; 

    do { 
     String input = JOptionPane.showInputDialog("Enter a number between 1-1000"); 
     n = Integer.parseInt(input); 

     if (n == guess) 
     { 
      System.out.println("Correct"); 
      c = true; 
     } 
     else if (n < guess) 
     { 
      System.out.println("Not Right"); 
      c = false; 
     } 
     else 
     { 
      System.out.println("Not Right"); 
      c = false; 
     } 

     guess++; 

    } while (c == false); 

    return c; 

} 

: 당신은 첫 번째 호출에 의해 반환 된 값을 테스트하지 않는

do { 
    game1.play(); // first call 
} while (game1.play()!=true); // second call 

:

do { 
     game1.play(); 
    } while (game1.play() != true); 
+0

여기서 추측 값은 무엇입니까? –

+0

while에'game1.play()'를 호출하면 다시 실행됩니다. 이전 do-while 루프에서와 마찬가지로 변수에 값을 저장하십시오. –

답변

2

이 루프는 루프의 각 반복 두 번 플레이 방법을 실행 따라서 true를 반환하더라도 다시 game1.play()으로 전화를 걸면 "1-1000 사이의 숫자를 입력하십시오."가 다시 표시됩니다. 이 내용은 루프의 각 반복에 play() 한 시간을 부를 것이다

boolean done = false; 
do { 
    done = game1.play(); 
} while (!done); 

:

은 교체하십시오.

그렇다면 왜 외부 루프가 필요한지 잘 모르겠습니다. game1.play()에 한 번만 전화 할 수 있습니다. game1.play()은 올바른 번호를 입력 할 때까지 반복됩니다.

+0

+1 정보 및 완전 답변 –