我正在做一个游戏,现在我需要为“英雄”设置名字!这需要玩家输入英雄的名字。问题是,当它在控制台中询问英雄1的名字时,它只是跳过,直接跳到英雄2。如果我使用.next()而不是.nextLine(),它可以工作,但它会将任何带有空格的名称解释为两个不同的名称!
下面是代码,希望有意义!提前谢谢大家:)
public void heroNames() //sets the name of heroes
{
int count = 1;
while (count <= numHeroes)
{
System.out.println("Enter a name for hero number " + count);
String name = scanner.nextLine();
if(heroNames.contains(name)) //bug needs to be fixed here - does not wait for user input for first hero name
{
System.out.println("You already have a hero with this name. Please choose another name!");
}
else
{
heroNames.add(name);
count++; //increases count by 1 to move to next hero
}
}
}
1条答案
按热度按时间x6yk4ghg1#
如果你用
Scanner.nextInt
读取numHeroes
,一个换行符会留在它的缓冲区中,因此后面的Scanner.nextLine
会返回一个空字符串,实际上会导致两个连续的Scanner.nextLine()
序列来获得第一个英雄名字。在下面的代码中,我建议你用
Integer.parseInt(scanner.nextLine)
读取英雄的数量,并且作为一种风格,不要使用局部变量count
,因为它隐式地绑定到heroNames
集合的大小: