public void addNewLamp (Lamp newLamp)
{
for(Lamp lampName: lamps)
{
if(lampName.equals(newLamp.getLampName()))
{
System.out.println("no");
Break;
}
else
{
System.out.println("New Lamp!");
lamps.add(newLamp);
}
}
}
灯泡是灯泡阵列。
在查看调试器时,似乎for循环只是跳过所有内容,整个IF语句,怎么样?
编辑:代码已经过编辑以适应评论,仍然是同样的问题。
这与我链接的问题不同,因为它不仅仅是比较字符串,我现在已经改变了!=“if(!lampName.getLampName()。equals(newLamp.getLampName() ))“仍然得到相同的结果。感谢您的链接
答案 0 :(得分:1)
我假设lampName是一个字符串?如果是这样,你需要这样做:
if(!lampName.getLampName().equals(newLamp.getLampName()))
编辑:正如他在评论中提到的ajb:如果你想遍历列表并修改它(通过在其中添加元素),你需要使用Iterator:
Iterator<Lamp> lampIterator = lamps.iterator();
while(lampIterator.hasNext()) {
if(lampIterator.next().equals(newLamp.getLampName()))
{
System.out.println("no");
break;
}
else
{
System.out.println("New Lamp!");
lamps.add(newLamp);
}
}
也是break关键字全是小写