【问题标题】:Java issues comparing strings in listJava 问题比较列表中的字符串
【发布时间】:2013-11-27 23:49:12
【问题描述】:

我正在学习一个中间 Java 类,我们被分配创建一个字典。用户将输入单词和含义,然后将其添加到列表中

目前,每当一个新词被添加到列表中时,它都应该将自己与其他词进行比较,直到找到合适的位置。每当我在第一个单词之前输入一个新单词时,它会删除第一个单词并将自己放在那里, 每当我输入一个应该在我得到 NullPointerException 之后出现的单词时。不知道怎么回事

这是我的代码中给我带来问题的部分:

    void add(Word w)
{
    WordNode temp = new WordNode(w);


    if (list == null)
        list = temp;

    else
    {
        WordNode aux = list;
                    WordNode back = null;
                    boolean found = false;
        while(aux != null && !found)
        if (temp.word.getTitle().compareTo(aux.word.getTitle()) < 0) 
                        found = true;
                    else
                    {
                        back = aux;
                        aux = aux.next;
                    }
                    aux.next = temp;
                    if (back == null)
                        list = temp;
                    else
                        back.next = temp;

    }// End of the else

}

请帮忙!

【问题讨论】:

  • 您是否尝试过在 IDE 调试器中单步执行代码?这告诉你什么?
  • 我建议您首先启动一个调试器并逐步检查您的代码,看看它在做什么。
  • &lt; 0 的比较结果表明该值相等。 == 0 的结果表明它是相同的。您的代码假定 &lt; 0 表示已找到它。请准备一些意图+括号。

标签: java list comparison


【解决方案1】:
while(aux != null && !found)
    if (temp.word.getTitle().compareTo(aux.word.getTitle()) < 0) 
                    found = true;
                else
                {
                    back = aux;
                    aux = aux.next;
                }

当aux为null时退出while循环,下一行

aux.next = temp;

会有一个空指针异常,因为 aux 为空

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多