Как добавить опцию выхода в программу с вводом int? [Джава]

Сейчас изучаю Java в школе и пишу классическую игру «Угадай число». Мне нужно добавить дополнительную возможность выхода из программы в середине программы, но я немного запутался в том, как правильно добавить эту возможность? Меня больше всего смущает, как я смогу это сделать, учитывая, что сканер запрашивает int, где я хочу, чтобы строка «вышла», чтобы позволить пользователю выйти.

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

public class NumberGuesser {

        public static void playGuess() {
            // method created to run all the game logic when the main method calls it
            Random rand = new Random();
            Scanner sc = new Scanner(System.in);
            int answer = rand.nextInt(50 - -50 + 1) + -50;
            int totalGuesses = 1;
            //  storing random + input + guess count
            while (true) {
                // while loop to run while method is called + random excluded to not create new one each guess
                System.out.println("Please enter a number between -50 and 50.");
                int guess = sc.nextInt();

                if  (guess > 50 || guess < -50) {
                    // incorrect entry handling first (does not add to count if incorrect)
                    System.out.println("Incorrect entry.");

                } else if (guess == answer) {
                    // correct answer check + break
                    System.out.println("Correct! It took you " + totalGuesses + " guesses.");
                    break;

                } else if (guess < answer) {
                    // if guess is less than + adds to count
                    System.out.println("The number is higher.");
                    totalGuesses++;

                } else if (guess > answer) {
                    // if guess is more than + adds to count
                    System.out.println("The number is lower.");
                    totalGuesses++;

                }
            }
        }

        public static void main (String[]args) {
        // main method to call the game + prompt to play again
        boolean playAgain = true;

        do {
            // call game when user input is y + ends program if not
            playGuess();
            System.out.println("Would you like to play again? Y/N.");
            Scanner sc = new Scanner(System.in);
            String answer = sc.nextLine();
            playAgain = answer.equalsIgnoreCase("y");
         }  while (playAgain);
    }
}

Введите номер за пределами поля для выхода, например 100?

g00se 28.05.2024 00:36

Что вы подразумеваете под «выйти в середине программы»? Если бы вы привели пример, это прояснило бы вопрос. Хотели бы вы сыграть еще раз? Да/Нет. Y Пожалуйста, введите число от -50 до 50. quit

Old Dog Programmer 28.05.2024 00:51

Прочитайте ввод как String, используя sc.nextLine(). Проверьте, равен ли он "quit", в противном случае проанализируйте его как Integer и продолжайте, как и сейчас.

f1sh 28.05.2024 00:52

Просто введите символ EOF: ctrl/d в Windows, ctrl/z в Unix и Linux.

user207421 29.05.2024 00:39
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
4
70
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вместо использования sc.nextInt() вы можете получить пользовательский ввод в виде строки, используя sc.nextLine(), проверить наличие слова quit, а затем либо выйти из программы, либо преобразовать введенные данные в число.

int guess;
String input = sc.nextLine();
    if (input.equals("quit"))
        System.exit(0);
    else 
        guess = Integer.parseInt(input);

Эй, это очень помогает, спасибо! Просто продолжение для новичка, почему бы вам не заключить в скобки if/else? Это то, что мне не нужно делать в операторах if? У меня сложилось такое впечатление.

esperlark 28.05.2024 22:13

Вам нужно это сделать только в том случае, если после if/else/for и т. д. имеется более одного оператора. ... Вы можете найти документацию здесь в разделе Блоки.

FWidder 18.06.2024 15:12

re: использование/опускание фигурных скобок, конечно, они необязательны, но их пропуск приводит к тонким ошибкам. Из docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html — «Решение о том, когда опускать фигурные скобки, является делом личного вкуса. Их отсутствие может сделать код более хрупким. Если второй оператор позже добавленный в предложение «then», распространенной ошибкой будет забывание добавить новые необходимые фигурные скобки. Компилятор не сможет обнаружить такую ​​ошибку, и вы просто получите неверные результаты.

Kaan 17.07.2024 18:23

Другие вопросы по теме