JAVA input.nextLine();不停止输入

时间:2018-07-08 21:41:18

标签: java

我已经着手开发一个程序来跟踪我的好友和我在玩飞镖时的得分。不幸的是,当我输入播放器数量并且该方法要求输入播放器名称时,它会跳过播放器1的输入。我使用了input.nextLine(),因为我需要能够一次在一个字符串中记录名字和姓氏。它对每个后续播放器都很好,但默认情况下绕过播放器1。 代码如下:

if (playerCount >= 1)
{
    System.out.println("Enter name for Player 1: ");
    name1 = input.nextLine();
}

if (playerCount >= 2)
{
    System.out.println("Enter name for Player 2: ");
    name2 = input.nextLine();
}

if (playerCount >= 3)
{
    System.out.println("Enter name for Player 3: ");
    name3 = input.nextLine();
}

if (playerCount >= 4)
{
    System.out.println("Enter name for Player 4: ");
    name4 = input.nextLine();
}

if (playerCount >= 5)
{
    System.out.println("Enter name for Player 5: ");
    name5 = input.nextLine();
}

if (playerCount >= 6)
{
    System.out.println("Enter name for Player 6: ");
    name6 = input.nextLine();
}

if (playerCount >= 7)
{
    System.out.println("Enter name for Player 7: ");
    name7 = input.nextLine();
}

if (playerCount >= 8)
{
    System.out.println("Enter name for Player 8: ");
    name8 = input.nextLine();
}

例如,当我输入4位玩家时,我会得到:

  

输入玩家人数:4   输入玩家1的名称:

     

输入玩家2的姓名:Johnny Bravo

     

输入玩家3的名字:凯文·培根

     

输入玩家4的名字:凯尔

     

玩家:4

     

[此空格为空白]

     

Johnny Bravo

     

凯文培根

     

凯尔

请让我知道为什么这样做,以及尽管有代码冗余,但如果使用以下内容仍可正常运行,则为什么要替换player1:

if (playerCount >= 1)
{
    System.out.println("Enter name for Player 1: ");
    name1 = input.nextLine();
    name1 = input.nextLine();
}

2 个答案:

答案 0 :(得分:0)

实时演示:https://repl.it/repls/LimitedGlitteringComments

.nextInt()的原因只是获取下一个整数,而不是换行符或其他任何内容。因此,下次您说.nextLine()时,只会得到\n。这就是为什么在.nextInt()之后我做了input.nextLine();

我还通过加入for循环来消除了大的if

希望这对您有帮助!

int numberOfPlayers;
Scanner input = new Scanner(System.in);
System.out.println("Enter number of players:");
numberOfPlayers = input.nextInt();
input.nextLine();
String[] arrayOfPlayers = new String[numberOfPlayers];
for (int i = 1; i <= numberOfPlayers; i++) {
  System.out.println("Enter name for Player " + i + ":");
  arrayOfPlayers[i-1] = input.nextLine();
}
// print list
for (String player : arrayOfPlayers) {
    System.out.println(player);
}

input.close();

答案 1 :(得分:0)

使用以下代码获取您的玩家人数。

int playerCount = Integer.parseInt(input.nextLine());

nextInt()不会消耗您输入playerCount输入后输入的换行符。在下一个nextLine()调用中消耗掉它。