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

Java 如何将try-and-catch合并到此数组列表中?,java,try-catch,Java,Try Catch,当我输入除正整数以外的任何内容时,它将崩溃。我试图在扫描仪之前加入一个try-and-catch,但是max_播放器和for循环的输入有一个红色下划线 import java.util.*; public class NameInput { public static void main(String [] args) { ArrayList<String> players = new ArrayList<String>(); System.o

当我输入除正整数以外的任何内容时,它将崩溃。我试图在扫描仪之前加入一个try-and-catch,但是max_播放器和for循环的输入有一个红色下划线

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.*;
公共类名称输入{
公共静态void main(字符串[]args){
ArrayList players=新的ArrayList();
System.out.println(“有多少玩家要玩这个游戏?”);
扫描仪输入=新扫描仪(System.in);
int max_players=input.nextInt();
对于(int i=1;i
我试图在扫描仪之前加入一个try-and-catch,但是max_播放器和for循环的输入有一个红色下划线


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

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

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 ();
    }
}

你确定这个问题是可以重现的吗?我看不出你的代码有什么问题。也许他指的是
有多少玩家要玩这个游戏?线程“main”java.util.InputMismatchException中的ss异常
我遇到的主要问题是:“有多少玩家要玩这个游戏?”线程“main”中的e异常java.util.Scanner.throwFor(Scanner.java:864)java.util.Scanner.next(Scanner.java:1485)java.util.Scanner.nextInt(Scanner.java:2117)java.util.Scanner.nextInt(Scanner.java:2076)NameInput.main(NameInput.java:13)java我在OP的当前代码中没有看到
try catch
块。是的,我知道。但他在我引用的部分中提到了这一点。我遇到了一个问题,它将要求循环中的玩家。我运行你的代码,看起来一切正常,你能更清楚地说明你遇到的问题吗?我能够解决它。感谢你的支持。1)成功获取输入后,您需要中断。
for
循环应该在
while
循环之后。我确实在while循环之后有for循环。此外,我应该在哪里设置中断?您的
for
循环在
while
循环中。我应该在哪里设置中断?-正是我设置的位置。哦,我知道我做了什么错。对不起,我对Java缺乏经验。我感谢您的支持和耐心。谢谢。
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 ();
    }
}