2015-01-04 5 views
-5

Я пытаюсь сделать простую игру угадывания номера в java. Предполагается, что программа генерирует случайное число от 0 до 10, и я хочу, чтобы пользователи угадали его. Если угаданный номер ниже, программы показывают сообщение, это означает, что угаданный номер ниже и хочет, чтобы пользователи угадали его до нужного номера. Я сделал эту программу, как показано ниже. Тем не менее, он сразу заканчивается. Как я могу изменить свой код, чтобы пользователи могли догадаться об этом, пока не догадался правильный номер? Я думаю, что это что-то вроде условной петли, но я не мог понять.Как я могу сделать условный Loopin Java

import java.util.Random; 
import java.util.Scanner; 

public class Main { 
    public static void main(String[] args) { 
     Random rnd = new Random(); 
     int realNumber = rnd.nextInt(11); 

     System.out.println("generated number is "+ realNumber + " (for test purposes)"); //Displaying generated number for test purposes 

     Scanner input = new Scanner(System.in); 
     System.out.println("Please enter your guess number between 0 and 10 ====>"); 
     int guessedNumber = input.nextInt(); 

     if(guessedNumber > realNumber){ 
      System.out.println("My number is lower than " + guessedNumber + " guess lower!"); 
     }else if(guessedNumber < realNumber){ 
      System.out.println("My number is higher than " + guessedNumber + " guess higher!"); 
     }else{ 
      System.out.println("Yes! That's my number!"); 
     } 
    } 
} 
+3

'в то время как () {...}' –

+1

Первый удар по Google для 'Java условном loop': http://docs.oracle.com/javase/tutorial/ java/nutsandbolts/while.html – Keppil

+2

Весь цикл является условным. –

ответ

1
boolean flag = true; // initialize flag with true value; 

do{ 
    Scanner input = new Scanner(System.in); 
    System.out.println("Please enter your guess number between 0 and 10 ====>"); 
    int guessedNumber = input.nextInt(); 

    if(guessedNumber > realNumber){ 
     System.out.println("My number is lower than " + guessedNumber + " guess lower!"); 

    }else if(guessedNumber < realNumber){ 
     System.out.println("My number is higher than " + guessedNumber + " guess higher!"); 
    }else{ 
     System.out.println("Yes! That's my number!"); 
     flag = false; // when condition satisfies change the flag to false to break the loop. 
    } 
}while(flag) 

вы должны использовать цикл, первый инициализировать свой флаг с истинным, а затем, когда ваше состояние удовлетворяет сделать его ложным разбить цикл;

+0

Я не буду рекомендовать преподавание 'do-while' с инструкцией' true' для новичков. –

+0

@LuiggiMendoza Выполняется до тех пор, пока условие не удовлетворит, поэтому я использую 'true' в цикле while. Пожалуйста, помогите мне, если возникнет проблема. –

+1

Думаю, вы не понимаете. Лучше показать, что цикл должен завершиться, когда условие выполняется в нужном месте, вместо использования бесконечного цикла и оператора 'break', по крайней мере для новичков. –

2

Пример:

boolean wrongAnswer = true; 
while(wrongAnswer){ 

    Scanner input = new Scanner(System.in); 
    System.out.println("Please enter your guess number between 0 and 10 ====>"); 
    int guessedNumber = input.nextInt(); 

    if(guessedNumber > realNumber){ 
     System.out.println("My number is lower than " + guessedNumber + " guess lower!"); 

    }else if(guessedNumber < realNumber){ 
     System.out.println("My number is higher than " + guessedNumber + " guess higher!"); 
    }else{ 
     wrongAnswer = false; 
     System.out.println("Yes! That's my number!"); 
    } 
} 
+0

Это бесконечный цикл. При вводе правильного ответа вам нужно установить 'wrongAnswer = false', а не' true'. – Thor84no

+0

@ Thor84no спасибо за указание моей опечатки –

Смежные вопросы