Как добавить оператор else, если они помещают строку во входную переменную int? - PullRequest
0 голосов
/ 29 января 2019

всякий раз, когда я запускаю этот код, если я ввожу строку в качестве ввода, я получаю сообщение об ошибке в строке 11. Справка?Я не уверен, как выполнить оператор else или что-то, спрашивающее, что, если они помещают строку, а не целое число (переменная выбора).Я новичок, поэтому очень хотелось бы получить помощь!

Вот мой код:

import java.util.Scanner;

public class rockPaper {
    public static void main(String args[]) {
        System.out.println("Hello world");
        int rock = 0;
        int paper = 1;
        int scissors = 2;
        Scanner input = new Scanner(System.in);
        System.out.println("Rock, Paper, or Scissors(0, 1, or 2)? Enter your integer: ");
        int choice = input.nextInt();
        int aIChoice = (int) (Math.random() * 3);
        if (choice == rock) {
            switch (aIChoice) {
            case 0:
                System.out.println("AI chose rock.");
                System.out.println("Rock ties with rock!");
                break;
            case 1:
                System.out.println("AI chose paper.");
                System.out.println("Fail. Paper trumps rock.");
                break;
            case 2:
                System.out.println("AI chose scissors.");
                System.out.println("You win! Rock trumps scissors.");
                break;
            default:
                break;
            }

        } else if (choice == paper) {
            switch (aIChoice) {
            case 0:
                System.out.println("AI chose rock.");
                System.out.println("You win! Paper trumps rock.");
                break;
            case 1:
                System.out.println("AI chose paper.");
                System.out.println("Paper ties with paper!");
                break;
            case 2:
                System.out.println("AI chose scissors.");
                System.out.println("Fail. Scissors trumps paper.");
                break;
            default:
                break;
            }
        } else if (choice == scissors) {
            switch (aIChoice) {
            case 0:
                System.out.println("AI chose rock.");
                System.out.println("Fail. Rock trumps scissors.");
                break;
            case 1:
                System.out.println("AI chose paper.");
                System.out.println("You win! Scissors trumps paper.");
                break;
            case 2:
                System.out.println("AI chose scissors.");
                System.out.println("Scissors ties with scissors!");
                break;
            default:
                break;
            }
        } else {
            System.out.println("Nope!");
        }
        input.close();
    }

}

Как указано выше, если я запускаю код и набираю любые буквы (строку), Я получаю сообщение об ошибке, ссылаясь на номер одиннадцатой строки.Я не уверен, что мне следует делать, потому что, как я уже упоминал, добавление оператора else ко всему этому не гарантирует «нет», если они ввели строку.

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Не совсем уверен, что вы ожидаете, если пользователь предоставит неверный ввод, но, я думаю, разумным вариантом будет проверить ввод и напечатать сообщение об ошибке пользователю, если ввод не является допустимым целым числом.Для этого просто добавьте этот код ниже вместо этой строки в вашем коде: int choice = input.nextInt();

int choice = -1;
if (input.hasNextInt()) {
  choice = input.nextInt();
} else {
  System.out.println("Please provide valid integer input: Rock, Paper, or Scissors(0, 1, or 2)?");
}

PS Также было бы хорошо проверить, находится ли ваше целое число в диапазоне [0,2].

0 голосов
/ 29 января 2019

Обычно вы не принимаете строковый ввод.Если вам действительно нужно по какой-то причине, вы можете заменить строку ввода на String choice = input.next(), а затем выполнить с ней все необходимые тесты.После того, как вы подтвердите, что это ввод, который вы хотите, обратитесь к этой записи для преобразования из String в int.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...