为什么这段代码会进入无限循环?

时间:2014-04-03 23:24:56

标签: java algorithm list search linked-list

我编写了这段代码,它将搜索链表中的字符(称为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;
}

1 个答案:

答案 0 :(得分:5)

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

head = head.next;放在if块之后,以便始终执行。