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

JAVA input.nextLine();不停止输入,java,Java,我已经开始做一个项目,记录我和我的朋友玩飞镖时的得分。不幸的是,当我输入玩家数量并且该方法要求输入玩家名称时,它跳过了玩家1的输入。我使用了input.nextLine(),因为我需要能够在一个字符串中记录名字和姓氏。对于后续的每个玩家,它都可以正常工作,但默认情况下会绕过玩家1。 代码如下: if (playerCount >= 1) { System.out.println("Enter name for Player 1: "); name1 = input.next

我已经开始做一个项目,记录我和我的朋友玩飞镖时的得分。不幸的是,当我输入玩家数量并且该方法要求输入玩家名称时,它跳过了玩家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的名字:约翰尼·布拉沃

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

输入玩家4的名字:凯尔

球员:4名

[此空格为空]

约翰尼·布拉沃

凯文培根

凯尔

请让我知道它为什么这样做,以及为什么在代码冗余的情况下,用以下内容替换player1 if内容仍然有效:

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

原因是,
.nextInt()
只获取下一个整数,而不是换行符或任何东西。所以下次你说
.nextLine()
时,它只得到一个
\n
。这就是为什么在
.nextLine()之后我做了
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();
int-numberOfPlayers;
扫描仪输入=新扫描仪(System.in);
System.out.println(“输入玩家数量:”);
numberOfPlayers=input.nextInt();
input.nextLine();
String[]arrayOfPlayers=新字符串[numberOfPlayers];

对于(int i=1;i使用下面的代码获取玩家计数

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

nextLine()不会使用在接受playerCount输入后提供的换行符。它会在下一个nextLine()调用中使用。

在调用
nextLine()之前,您可能会调用
nextLine();
第一个方法不使用控制台中的新行字符,因此当第二个方法执行时,它只会单独获取新行。建议:使用循环和字符串数组,而不是命名变量。我只是没有太多经验,所以对我来说很简单。如果我理解正确,您首先要用“inp”解决我的主要问题“nextLine()之后的ut.nextLine()”,然后根据playerCount变量为玩家名称声明一个字符串数组,并使用多个索引,用第一个for循环填充名称,然后用另一个for循环显示名称。我想我可以为每个玩家的分数创建一个int数组。我该如何创建一个结构?我想要dart1,2,3/round.我想我可以用:for(轮)>for(玩家)>for(飞镖)#做一个新的问题,我很乐意帮你:)如果这个答案有助于记住向上投票并标记为正确答案