我有一个问题,即使用LeetCode的链接列表添加两个数字。 以下是问题本身,我面临的问题以及我的代码。
您将获得两个非空链表,表示两个非负数 整数。数字以相反的顺序存储,每个数字都存储 节点包含一个数字。添加两个数字并将其作为a返回 链表。
您可以假设这两个数字不包含任何前导零,除了 数字0本身。
实施例
输入:(2 - > 4 - > 3)+(5 - > 6 - > 4)输出:7 - > 0 - > 8说明: 342 + 465 = 807。
问题在于打印出来:
Error:
A: 7
B: 7
C: 7
A: 10
B: 0
Exception in thread "main" java.lang.NullPointerException
at Solution.addTwoNumbers(MainClass.java:61)
at MainClass.main(MainClass.java:123)
当result.val为0并且调用NullPointerException时它停止。我不太了解这一部分,因为我在Java中认为值0与NullPointerException不同。有人可以帮我这个吗?谢谢。
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode result = new ListNode(0);
int up = 0;
ListNode num1 = l1, num2 = l2;
while (num1 != null || num2 != null){
int sum = 0;
int prevUp = 0;
if (num1 != null && num2 == null){
sum = num1.val + up;
if (sum >= 10){
up = 1;
sum = sum - 10;
}
num1 = num1.next;
result.val = sum;
result = result.next;
}
else if (num2 != null && num1 == null){
sum = num2.val + up;
if (sum >= 10){
up = 1;
sum = sum - 10;
}
num2 = num2.next;
result.val = sum;
result = result.next;
}
else{
sum = num1.val + num2.val;
System.out.println("A: "+ sum);
if (sum >= 10){
prevUp = up;
up = 1;
sum = sum - 10;
}
System.out.println("B: " + sum);
num1 = num1.next;
num2 = num2.next;
result.val = sum + prevUp;
System.out.println("C: " + result.val);
result = result.next;
}
}
return result;
}
答案 0 :(得分:0)
提供 NullPointerException 的原因是您已经为ResultList定义了只有一个节点。
当您找到result.next == null
答案 1 :(得分:0)
由于 result = result.next 的原因,它正在抛出空指针异常,而结果只有一个Node而你已初始化为 result = new listNode(0);
答案 2 :(得分:0)
在这里,您可以使用引用变量遍历LinkedList
MemoryStream ms = new MemoryStream();
new FileStream(Afiladdress, FileMode.Open).CopyTo(ms);
Bitmap myimage = new Bitmap(ms);
float Width = myimage.Width / myimage.HorizontalResolution;//in INCHES
float Height= myimage.Height/ myimage.VerticalResolution;//in INCHES