編譯器錯誤不在此行: ListNode t1=h1,t2=h2; 在這條線上: t1=h1,t2=h2; 可以在一個聲明中聲明多個變量,但不能在一個語句中執行多個賦值(*)。就像上面說的:你需要一個;: t1=h1; t2=h2; (*)好的,您可以在一個語句中執行多個賦值。例如: for (;; t1 = h1, t2 = h2) { ... } 這是允許的,因為ForUpdate是StatementExpression的列表(賦值是SEs)。 也可以執行t1 = t2 = h1;,首先將h1的值賦給t2,然后將t2的值賦給t1。 更確切地說,我應該說的是,不能在一個語句中使用多個語句表達式(除了basic for語句中的ForInit中),用逗號分隔。必須使用的分隔符是;,將其分成兩個語句。 順便說一句,如果只迭代一次,我認為你的方法會簡單得多: public ListNode getIntersectionNode(ListNode h1, ListNode h2) { if(h1==null || h2==null) return null; while (h1 != null && h2 != null) { h1 = h1.next; h2 = h2.next; } return (h1 != null) ? h1 : h2; }