簡體   English   中英

我在雙向鏈接列表中查找節點的方法無法正常工作,我也不知道為什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM