Java不继续循环

Java不继续循环,java,arrays,loops,Java,Arrays,Loops,我正在制作一个简单的for循环,以遍历ArrayList并向其中添加对象,但当我输入第一个对象时,什么都没有发生。看起来程序没有继续循环。以下是我所拥有的: for (int i = 0; i < (numPlayers.nextInt()-1); i++){ System.out.println("what is player " + (i + 1) + " name?"); Scanner namePlayer = new Scanner(System.in);

我正在制作一个简单的for循环,以遍历ArrayList并向其中添加对象,但当我输入第一个对象时,什么都没有发生。看起来程序没有继续循环。以下是我所拥有的:

for (int i = 0; i < (numPlayers.nextInt()-1); i++){
    System.out.println("what is player " + (i + 1) + " name?");
    Scanner namePlayer = new Scanner(System.in);
    String playerName = namePlayer.nextLine();
    playerList.add(new Player(playerName));
}

如果可能,只需定义一次循环的限制:

int numberOfPlayers = numPlayers.nextInt()-1;
for (int i = 0; i < numberOfPlayers; i++){
    System.out.println("what is player " + (i + 1) + " name?");
    Scanner namePlayer = new Scanner(System.in);
    String playerName = namePlayer.nextLine();
    playerList.add(new Player(playerName));
}
您需要确保循环的迭代次数与您想要的次数相同

public static void main(String[] args)
    {
        Scanner numPlayers = new Scanner(System.in);
        ArrayList<Player> playerList = new ArrayList<>();
        int input = numPlayers.nextInt();

        for (int i = 0; i < input; i++){
            System.out.println("what is player " + (i + 1) + " name?");
            String playerName = numPlayers.next();
            playerList.add(new Player(playerName));
        }

    }
您应该在for循环外部声明scanner对象。代码的问题是,每次输入字符串后,都需要代码为int i=0提供一个整数;i请提供一个参数。什么是numPlayers?移动扫描仪名称player=new ScannerSystem.in;不管numPlayers是什么,每次循环迭代时都会提供一个新值。您提供的第二个值是多少?如果该值小于2,则循环将按照指示终止。每次调用nextInt时,它都会读取一个新的int。我假设您打算将numPlayers.nextInt放入局部变量,因此只调用一次。
public static void main(String[] args)
    {
        Scanner numPlayers = new Scanner(System.in);
        ArrayList<Player> playerList = new ArrayList<>();
        int input = numPlayers.nextInt();

        for (int i = 0; i < input; i++){
            System.out.println("what is player " + (i + 1) + " name?");
            String playerName = numPlayers.next();
            playerList.add(new Player(playerName));
        }

    }