向我显示错误"无法分配字段"val",因为"<local9>.next"为空。错误是编译时 arror 并且显示在 while 循环中



给定两个非空表示两个非负整数的链表。数字按倒序存储,它们的每个节点都包含一个数字。将两个数相加,并以链表的形式返回和。

你可以假设这两个数字不包含任何前导零,除了数字0本身。

示例1:

Input: l1 = [2,4,3], l2 = [5,6,4]
Output: [7,0,8]
Explanation: 342 + 465 = 807.

示例2:

Input: l1 = [0], l2 = [0]
Output: [0]

示例3:

Input: l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
Output: [8,9,9,9,0,0,0,1]
**
* Definition for singly-linked list.
* public class ListNode {
*     int val;
*     ListNode next;
*     ListNode() {}
*     ListNode(int val) { this.val = val; }
*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) 
{
ListNode result1=reverse1(l1);
ListNode result2=reverse2(l1);
int sum1=0;
while(result1.next!=null)
{
sum1=(sum1*10)+result1.val;
result1=result1.next;
}
int sum2=0;
while(result2.next!=null)
{
sum2=(sum2*10)+result2.val;
result2=result2.next;
}
int totalsum=sum1+sum2;
ListNode dummy = new ListNode(0);
ListNode temp = dummy;
while(totalsum>0)
{
int rem=totalsum%10;
temp.next.val=rem; // here error is shown
temp=temp.next;

totalsum=totalsum/10;
}
return dummy.next;
}

ListNode reverse1(ListNode head)
{
ListNode curr1=head;
ListNode prev1=null;
while(curr1!=null)
{ 

ListNode temp=curr1.next;
curr1.next=prev1;
prev1=curr1;
curr1=temp;
}
return prev1;
}

ListNode reverse2(ListNode head2)
{ 
ListNode curr2=head2;
ListNode prev2=null;
while(curr2!=null)
{ 

ListNode temp=curr2.next;
curr2.next=prev2;
prev2=curr2;
curr2=temp;
}
return prev2;
}
}  

这是一个来自智能编译器的编译时错误。你没有发布ListNode的实现,但我很确定,在初始化成员next的值是空的,所以在你的代码

ListNode dummy = new ListNode(0);
ListNode temp = dummy;
while(totalsum>0)
{
int rem=totalsum%10;
temp.next.val=rem; // here error is shown
temp=temp.next;

totalsum=totalsum/10;
}

temp.next(temp是一个新的Listnode)没有机会不为空,因为编译器说…

相关内容

最新更新