【问题标题】:Why does this code go into a infinite loop?为什么这段代码会进入无限循环?
【发布时间】:2014-04-03 23:24:55
【问题描述】:

我编写了这段代码,它将在链表(称为 ListNode)中搜索字符,检查是否有任何大写字符,然后将它们存储在新的链表中(然后返回新的链表)。当我运行这段代码时,它进入一个“无限”循环,不返回任何内容。这是为什么? NodeList 确实包含一些大写字符。代码如下:

public static ListNode copyUpperCase(ListNode head) {
    ListNode newListNode = mkEmpty();
    if(head == null){
        throw new ListsException("");
    }else{      
        while(head.next != null){
            if(Character.isUpperCase(head.element)){
                newListNode.element = head.element;         
                head = head.next;
            }
        }
    }
    return newListNode;
}

【问题讨论】:

  • 如果if 语句失败,那么你就不会更新head,所以while 循环总是测试相同的条件。
  • 是的,这似乎是问题所在。谢谢!

标签: java algorithm list search linked-list


【解决方案1】:

如果head.element 字符不是大写怎么办? head 永远不会更新为 head.next。

将head = head.next; 放在if 块之后,这样它总是会被执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-13
    • 2021-09-18
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多