这是代码
public void findDNode(String name)
{
DNode u = header;
while(u != null)
{
if(name == u.getElement())
{
System.out.println(u.getElement());
break;
}
else if (u == null)
{
System.out.println("Error: not found");
break;
}
u = u.nextNode();
}
}
由于某种原因,当我寻找的节点不存在时,它不会打印错误:找不到消息。
编辑:Nevermind刚刚实现当u == null时,while循环不会发生
答案 0 :(得分:4)
您应该使用equals()
来比较Java字符串:
if (name.equals(u.getElement()))
{
...
使用==
运算符比较字符串会比较引用,这在大多数情况下都不是正确的。
此外,“未找到”逻辑错位。它应该放在循环之外(具有适当的if
条件)。
答案 1 :(得分:2)
你永远不会在循环中变为空!循环后执行检查。
public void findDNode(String name)
{
DNode u = header;
while(u != null)
{
if(name == u.getElement())
{
System.out.println(u.getElement());
break;
}
u = u.nextNode();
}
if (u==null)
System.out.println("Error: not found");
}
编辑:是的,你应该使用equals()
答案 2 :(得分:0)
除了使用equals()
代替==
来比较字符串之外,还有另一个问题。
如何在if (u == null)
循环中拥有while(u != null)
。那个if (u == null)
块永远不会执行,因为while循环将在u == null
时结束。这就是错误:未找到从未打印的原因。