JAVA input.nextLine();不停止输入
我已经开始做一个项目,记录我和我的朋友玩飞镖时的得分。不幸的是,当我输入玩家数量并且该方法要求输入玩家名称时,它跳过了玩家1的输入。我使用了input.nextLine(),因为我需要能够在一个字符串中记录名字和姓氏。对于后续的每个玩家,它都可以正常工作,但默认情况下会绕过玩家1。 代码如下:JAVA input.nextLine();不停止输入,java,Java,我已经开始做一个项目,记录我和我的朋友玩飞镖时的得分。不幸的是,当我输入玩家数量并且该方法要求输入玩家名称时,它跳过了玩家1的输入。我使用了input.nextLine(),因为我需要能够在一个字符串中记录名字和姓氏。对于后续的每个玩家,它都可以正常工作,但默认情况下会绕过玩家1。 代码如下: if (playerCount >= 1) { System.out.println("Enter name for Player 1: "); name1 = input.next
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(飞镖)#做一个新的问题,我很乐意帮你:)如果这个答案有助于记住向上投票并标记为正确答案