Java Scanner nextInt проблема, необходимо остановить ошибку при вводе строки и вернуться назад - PullRequest
0 голосов
/ 13 марта 2019
    private static int getNumberOfPlayers() {
    System.out.println("Please enter number of players ");
    Scanner sc = new Scanner(System.in);
    int numOfPlayers = sc.nextInt();
    System.out.println("You have selected " + numOfPlayers + " Players");
    // controlling input, at least 2 - at most 4 players can play the game
    while (numOfPlayers < MIN_NUM_PLAYERS || numOfPlayers > MAX_NUM_PLAYERS) {
        System.out.print("Please enter a number between 2 and 4: ");
        numOfPlayers = sc.nextInt();
        System.out.println("You have selected " + numOfPlayers + " players");
    }
    return numOfPlayers;
}

Когда игрок вводит что-либо иное, чем здесь, игра вылетает.Я хотел бы, чтобы сообщение sout сообщало пользователю и возвращалось к нему, чтобы они могли повторить попытку вместо сбоя.Может кто-нибудь, пожалуйста, помогите мне изменить этот метод для реализации этой функциональности.Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 13 марта 2019

Просто используйте исключение, как это.Это может быть то, что вы хотите:

 private static int getNumber() {

System.out.println("Please enter number of players ");
Scanner sc = new Scanner(System.in);

int numOfPlayers = sc.nextInt();
System.out.println("You have selected " + numOfPlayers + " Players");

int  newNumOfPlayers;
// controlling input, at least 2 - at most 4 players can play the game
while(true){

if (numOfPlayers < MIN_NUM_PLAYERS || numOfPlayers > MAX_NUM_PLAYERS) {
    System.out.print("Please enter a number between 2 and 4: ");

    try{
   newNumOfPlayers = sc.nextInt();
    }catch(Exception ex){
         System.out.println("Please select a number only");
         sc.next();
         continue;
    }
    numOfPlayers = newNumOfPlayers;
    System.out.println("You have selected " + numOfPlayers + " players");
    return numOfPlayers;
}
}
}
...