Java — Нужно, чтобы мой цикл не только заканчивался после трех догадок, но и отображал правильное число

#java #loops #while-loop

#java #циклы #цикл while

Вопрос:

Я пытаюсь, чтобы мой цикл выполнялся только три раза. Поэтому, если пользователь не угадывает правильное число после своего третьего предположения, цикл заканчивается, который у меня есть, но он не отображает, каким было число. Мне нужно, чтобы число отображалось после третьего предположения, но я не уверен, почему оно не отображает правильное число.

 import java.util.Scanner;


public class GuessNumberDoWhileA {
public static void main(String[] args) {
    
    //Generate random number from 1-10
    int number = (int) (Math.random()*9   1);
    int count = 0;
    //Auto Generated Method stub
    Scanner Input = new Scanner(System.in);
    
    //Tell the user to guess a number
    System.out.println("Guess a number between 1 and 10");
    
    //int guess = -1;
    
    //while (guess != number) {
      while (count < 3) {   
        count  ;
        
        
        System.out.print("nEnter your guess: ");
        int guess = Input.nextInt();
        
        if (guess == number)
            System.out.println("Correct the number was "   number);
        else if (guess > number)
            System.out.println("Your guess is to high try again!");
        else if (guess < number)
            System.out.println("Your guess is to low try again!");
        else 
            System.out.println("The correct number is "   number);
    }
            System.out.println("The number was "   number);

}
  

}

Комментарии:

1. В каком случае вы ожидаете печатать "The correct number is " number ? A guess может быть либо равно number , либо больше, либо меньше. 4-го варианта нет.

2. @Amongalen это именно то, что мне нужно. Если они не угадывают это по одному из трех предположений, четвертого предположения нет, просто отобразите, каким было число.

3. Для этого и нужен System.out.println("The number was " number); внешний цикл. Что вам нужно, так это дополнительное условие в вашем цикле, которое не требует дополнительных предположений, если вы уже получили правильное число. В настоящее время вы просматриваете все три предположения, даже если первое или второе предположение уже было правильным.

Ответ №1:

Вам нужна boolean переменная, которую можно использовать для проверки того, смог ли пользователь правильно угадать число или нет. Начальное значение этой логической переменной должно быть false .

Вам не нужен последний else оператор в цикле. Если пользователь правильно угадывает число, установите для boolean переменной значение true и выйдите из цикла. После цикла проверьте, является ли boolean переменная false или нет. Если это так false , это означает, что пользователь не смог угадать число, поэтому отобразите правильное число пользователю.

Если пользователь сможет угадать число, то первый if оператор в цикле выведет правильное число на консоль и выйдет из цикла. Он также установит логическую переменную в true , поэтому правильное число будет напечатано только один раз на консоли.

 boolean guessed = false;
    
while (count < 3) {   
    count  ;
        
    System.out.print("nEnter your guess: ");
    int guess = Input.nextInt();
        
    if (guess == number) {
        System.out.println("Correct the number was "   number);
        guessed = true;
        break;
    }
    else if (guess > number)
        System.out.println("Your guess is to high try again!");
    else if (guess < number)
        System.out.println("Your guess is to low try again!");
}
    
if (!guessed) System.out.println("Number was: "   number);
  

Комментарии:

1. Это имеет смысл. Теперь я знаю, почему, даже когда я догадался, цикл продолжал выполняться. Большое спасибо! Мне еще многому предстоит научиться!