我的任務是將名稱輸入到數組中。如果名稱已經輸入,程序必須提醒,並提供相同數量的重新進入播放器。Java:在數組中實現具有重複值的循環
這是我的代碼:
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);
}
}
有趣的是,甚至當我進入一個重複的值,它被捕獲並指派真實isDuplicate,但當它返回到while循環的開始,值再次錯誤(「CHECK:false」)。
看起來像一件容易的事,但我抓住了......
而且,我不想使用HashSet的,並希望只使用數組。
非常感謝!
編輯:
感謝別人,我重寫了代碼如下:
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");
}
}
}
非常感謝!我用一種不同的方式重新編寫代碼,但是你的解決方案提示瞭如何去做。 – 2014-11-26 01:14:34