当我输入正整数以外的任何用户输入时,它会崩溃。我尝试在 Scanner 之前加入 try 和 catch,但是 for 循环的 max_players 和输入有一个红色下划线。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); } } } }
2 回答

跃然一笑
TA贡献1826条经验 获得超6个赞
这可以使用循环并捕获异常来完成
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 ();
}
}

肥皂起泡泡
TA贡献1829条经验 获得超6个赞
我尝试在 Scanner 之前加入 try 和 catch,但是 for 循环的 max_players 和输入有一个红色下划线。
要解决此问题,您需要在 try-catch 块之外声明 max_players,并为其初始化默认值。
添加回答
举报
0/150
提交
取消