如何将try-and-catch合并到此数组列表中



当我输入除正整数以外的任何东西的用户输入时,它都会崩溃。我试图在Scanner之前加入一个try-and-catch,但for循环的max_players和input有一个红色下划线。

import java.util.*;
public class NameInput {
public static void main(String [] args) {

ArrayList<String> players = new ArrayList<String>();
System.out.println("How many players are going to play the game?");
Scanner input = new Scanner(System.in);
int max_players = input.nextInt();

for(int i = 1; i <= max_players; i++) {
System.out.println("nPlayer " + i + ", please state your name: ");
String name =input.next();
players.add(name);
}

System.out.println(players.size());
System.out.println(players);
}
}

更新:为什么在我给用户起了名字之后,这个问题又出现了?

import java.util.*;
public class NameInput {
public static void main(String [] args) {
ArrayList<String> players = new ArrayList<String>();
int max_players = 0;
Scanner input = new Scanner(System.in);
while (true) {
System.out.println("How many players are going to play the game?");
try {
max_players = input.nextInt();
} catch (InputMismatchException ee) {
System.out.println("try again");
input.nextLine ();
}
for(int i = 1; i <= max_players; i++) {
System.out.println("nPlayer " + i + ", please state your name: ");
String name =input.next();
players.add(name);
}
}
}
}

这可以使用循环和捕获异常来完成

int max_players = 0;
Scanner input = new Scanner(System.in);
while (true) {
System.out.println("How many players are going to play the game?");
try {
max_players = input.nextInt();
break;
} catch (InputMismatchException ee) {
System.out.println("try again");
input.nextLine ();
}
}

我试图在Scanner之前加入一个try-and-catch,但for循环的max_players和输入有一个红色下划线。

要通过此问题,您需要在try-catch块之外声明max_players,并为其初始化一个默认值。

最新更新