Как завершить программу, когда пользователь трижды ввел неправильный ответ - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь попросить пользователя ввести число от 0 до 9.Если они введут правильный номер, программа завершит работу, но если этого не произойдет, у них будет три шанса получить правильный номер, пока их не попросят повторно запустить программу.

Пока это мой код:

import java.util.Scanner;

public class DoWhileLoop
{
    public static void main(String[] args)
    {
        int a = 1;
        Scanner keyboard = new Scanner(System.in);


        do{
            a++;
            System.out.println("Please enter a number 0-9");
            int value = keyboard.nextInt();


            if(value == 1)
            {
                System.out.println("one");
            }
            else if(value == 2)
            {
                System.out.println("two");
            }
            else if(value == 3)
            {
                System.out.println("three");
            }
            else if(value == 4)
            {
                System.out.println("four");
            }
            else if(value == 5)
            {
                System.out.println("five");
            }
            else if(value == 6)
            {
                System.out.println("six");
            }
            else if(value == 7)
            {
                System.out.println("seven");
            }
            else if(value == 8)
            {
                System.out.println("eight");
            }
            else if(value == 9)
            {
                System.out.println("nine");
            }
            if (value <= 9) {
                break;
            }
        }while (a <= 3);
            System.out.println("Please rerun the program and enter a number 0-9");
    }
}

Если у вас есть какие-либо советы о том, что делать, это будет с благодарностью.

Ответы [ 4 ]

0 голосов
/ 25 ноября 2018

Вы должны переместить ваш "a ++" в оператор else в конце кода.Как то так:

import java.util.Scanner;

public class DoWhileLoop {
public static void main(String[] args) {
    int a = 0;
    Scanner keyboard = new Scanner(System.in);
    do{
        System.out.println("Please enter a number 0-9");
        int value = keyboard.nextInt();

        if(value == 1){System.out.println("one");}
        else if(value == 2) {System.out.println("two");}
        else if(value == 3) {System.out.println("three");}
        else if(value == 4){System.out.println("four");}
        else if(value == 5){System.out.println("five");}
        else if(value == 6){System.out.println("six");}
        else if(value == 7){System.out.println("seven");}
        else if(value == 8){System.out.println("eight");}
        else if(value == 9){System.out.println("nine");}
        if (value <= 9) {break;}
        else {a++;}
        }
    while (a < 3);
    if (a == 3) {System.out.println("You've used all your attemps.");}        
}
}
0 голосов
/ 25 ноября 2018

Ваша попытка выглядит очень близко к тому, чего вы хотите достичь.

В настоящее время у вас есть следующий фрагмент кода, который приведет к завершению программы, если пользователь введет любое число, меньшее или равное 9 * 1003.*

if (value <= 9) {
            break;
        }

Чтобы строго соответствовать требованию о прекращении работы программы, если пользователь вводит число от 0 до 9, возможно, эта проверка должна выглядеть примерно так:

if (value >=0 && value <=9) {
            break;
}

В Java выможно использовать оператор && в операторе if, чтобы гарантировать выполнение кода внутри оператора if только в том случае, если оба условия по обе стороны от && выполнены.

Почему бы не добавить оператор печати, который запрашиваетПользователь, что они ввели правильный ответ?Например,

if (value >=0 && value <=9) {
            System.out.println("Correct");
            break;
}

С точки зрения вашего текущего кода, он уже завершается, если пользователь вводит любое число больше 9 более чем в 3 раза, так что это хорошо.Я думаю, что если вы исправите оператор if, о котором я упоминал выше, вы должны быть ближе к ожидаемому поведению.

Последнее, что следует отметить, - программа вызовет эту строку

            System.out.println("Please rerun the program and enter a number 0-9");

Независимо от того, как завершается цикл do-while.Если вы хотите, чтобы программа полностью завершала работу, когда пользователь вводит правильное предположение, не печатая эту строку, вы можете просто добавить оператор возврата вместо разрыва:

    if (value >=0 && value <=9) {
            System.out.println("Correct");
            return;
}

Это заставит метод main 'return 'вместо продолжения выполнения каких-либо инструкций, это приведет к завершению программы

0 голосов
/ 25 ноября 2018

вот вам какое-то чтение: https://docs.oracle.com/javase/tutorial/java/javaOO/returnvalue.html

оператор возврата используется для возврата значения из метода.

например, если вы хотите создать номер класса, которыйможет разделить два числа, вы можете вернуть результат вашей функции и использовать его, как, например, в System.out.println.

public class Number
{

public static void main(String[] args)
{
    System.out.println(divide(4, 5));
    System.out.println(divide(4,0));


}

    public static float divide(int a, int b)
    {
        if(b == 0) {
          throw new IllegalArgumentException("Error you can't divide by zero !");
        }
        return a / b;

  }

}

Для броска это немного сложнее, в Java этоможет случиться, что у вас есть исключение, например, вы не можете разделить на 0. В этом случае выведите исключение в этом случае IllegalargumentException.

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

0 голосов
/ 25 ноября 2018

вместо этого вы можете использовать свой код:

public class DoWhileLoop {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            Random rand = new Random();
            int num = rand.nextInt(10);
            Boolean correct = false;
            int attempts = 0;
            do{
                if (attempts == 3) {
                    System.out.println("rerun the program");
                    break;

                }
                System.out.println("Enter number 1-9");
                int ans = in.nextInt();
                if (ans == num) {
                    correct = true;
                    System.out.println("Correct! the number is: " + ans);
                } else {
                    attempts++;
                }
            }while(!correct); 
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...