[英]My method for finding a node in a double linked list isn't working properly and I don't know why?
這是代碼
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();
}
}
由於某種原因,當我要查找的節點不存在時,它不會顯示錯誤:未找到消息。
編輯:沒關系,當u == null時才意識到,while循環不會發生
您應該使用equals()
比較Java字符串:
if (name.equals(u.getElement()))
{
...
使用==
運算符比較字符串會比較引用,這在大多數情況下不是正確的選擇。
同樣,“未找到”邏輯放錯了位置。 可能應該將其放置在循環外部( if
條件適當, if
)。
您永遠不會在循環內成為null! 循環后執行檢查。
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()
除了使用equals()
代替==
來比較String之外,還有另一個問題。
在while(u != null)
循環中如何擁有if (u == null)
。 if (u == null)
塊將永遠不會執行,因為while循環將在u == null
時結束。 這就是永遠不會打印錯誤:未找到的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.