【发布时间】:2015-01-22 22:01:52
【问题描述】:
我的任务是将名称输入到数组中。如果该名称已经输入,程序必须对此发出警告并提供重新输入相同号码的玩家。
这是我的代码:
public void enterNames() {
for (int i=0; i<nameOfPlayers.length; i++)
{
do
{
// isDuplicate is a Boolean initialized to false
System.out.println("CHECK": + isDuplicate);
System.out.println("Enter player " + (i+1) + ":");
nameOfPlayers[i] = in.next();
for (int k=0; k<nameOfPlayers.length; k++)
{
if (k!=i && nameOfPlayers[i].equals(nameOfPlayers[k]))
{
isDuplicate = true;
break;
}
}
} while (isDuplicate = false);
}
}
有趣的是,即使我输入了一个重复的值,它也会被捕获并将true分配给isDuplicate,但是当它返回到while循环的开头时,该值再次为false(“CHECK:false”)。
看起来很容易,但我被抓住了......
另外,我不想使用 HashSet,只想使用 Array。
非常感谢!
编辑:
感谢其他人,我将代码重写为以下内容:
public void enterNames() {
List<String> nameOfPlayersList = new ArrayList<String>();
int i = 0;
for (i=0; i<numberOfPlayers;)
{
while(true)
{
System.out.println("Enter player " + (i+1) + ":");
String input = in.next();
if(!nameOfPlayersList.contains(input))
{
nameOfPlayersList.add(input);
i++;
break;
}
System.out.println("Player " + input + " already exists, please retry");
}
}
}
【问题讨论】:
标签: java arrays loops duplicates