當我輸入正整數(shù)以外的任何用戶輸入時,它會崩潰。我嘗試在 Scanner 之前加入 try 和 catch,但是 for 循環(huán)的 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); }}更新:為什么在我給用戶命名后問題會重新出現(xiàn)?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條經(jīng)驗 獲得超6個贊
這可以使用循環(huán)并捕獲異常來完成
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條經(jīng)驗 獲得超6個贊
我嘗試在 Scanner 之前加入 try 和 catch,但是 for 循環(huán)的 max_players 和輸入有一個紅色下劃線。
要解決此問題,您需要在 try-catch 塊之外聲明 max_players,并為其初始化默認值。
添加回答
舉報
0/150
提交
取消