2017-11-08 7 views
0

나는 사용자가 색상을 추측하는 행맨 게임을 만들고 있습니다. 내가 원하는 일은 : 사용자가 5 개 이상을 잘못 읽으면 (5 개의 힌트 모두를 읽었을 때), 사용자가 길을 잃었다는 내용이 표시됩니다. while 루프가 끝난 후 (단어가 정확하거나 5 가지 힌트를 모두 읽은 후), 그것은 당신에게 승리 여부를 알려 주어야합니다. 이 수행하는 코드의 일부입니다 :While Loop 인쇄 문장을 영원히 반복 할 때

public static void main(String[] args){ 
    Scanner in = new Scanner(System.in); 
    String color = getColor(); 
    String result = EmptyStr(color); 
    String[] hints = getHints(color); 
    System.out.println("Please enter a letter:"); 
    char letter = in.next().charAt(0); 
//----------------------------------------------------------- 
    int wrong = 0; 
    while (wrong<6){ 
    if (checkLetter(color, letter)){ 
     // result was previously defined elsewhere so don't worry about it 
     result = Result(color, result, letter); 
     System.out.println("Correct guess! here is your word so far: " + result); 
     System.out.println("Lifelines left: " + (5 - wrong)); 
     if (result.equals(color)){ 
     System.out.println("congratulations! You Won!"); 
     break; 
     } 
    } 
    else{ 
     wrong ++; 
     System.out.println(hints[0]); 
     System.out.println("Lifelines left: " + (5 - wrong)); 
    } 
    } 
    // also not sure what to put here after player wins or loses: System.out.println("Sorry! You lost! The correct word was: " + color); 

} result = Result(color, result, letter); System.out.println("Correct guess! here is your word so far: " + result); System.out.println("Lifelines left: " + (5 - wrong)); 반복 영원히

그러나, 내가 입력 한 글자 한 번, 그것은 올바른. 나는 그것을 알고 싶어 : 그것은 왜 영원히 반복합니까? 또한 작동하려면 어떻게 수정해야합니까?

+0

'checkLetter'가'true'를 리턴한다고 가정하면'result'가'color'와 같을 때'break' 만합니다 - 그렇지 않으면 루프 할 것입니다 –

+0

@ScaryWombat 그러나 다른 문자를 다시 입력 할 수 없습니다. 문자가 –

+0

인 경우이 경우에는 ** 귀하의 ** 로직을 정렬해야합니다. 어쩌면 당신은'char letter = in.next(). charAt (0);'을 루프 안으로 옮기기를 원할 것입니다. –

답변

0

나는 내 자신의 문제를 발견했습니다! 그것을 반복하고 나에게 편지를 다시 입력 할 수 있도록하는

것은 char letter = in.next().charAt(0);while 루프 안에 있어야 순서대로입니다. 그것은 전체 문제를 해결했습니다!

-1

문제가 발생한다고 생각합니다. 추측이 잘못되었을 때만 사용자가 추측을 맞출 때 반복 할 필요가 없습니다. 먼저 "wrong ++"를 추가하십시오. 그게 문제를 해결할 수도 있습니다.

if (checkLetter(color, letter)){ 
     // result was previously defined elsewhere so don't worry about it 
     result = Result(color, result, letter); 
     System.out.println("Correct guess! here is your word so far: " + result); 
     System.out.println("Lifelines left: " + (5 - wrong)); 
     wrong ++;