z*****5 发帖数: 1871 | 1 新手,为改变命运每天挑灯夜练,望指教,谢谢!
public static Node add(Node n1, Node n2) {
if (n1==null || n2==null) return null;
int carry = 0;
Node result = new Node(0);
Node p = result;
while (n1!=null || n2!=null) {
p.data = (n1==null ? n2.data : n2==null ? n1.data : (n1.data+n2.
data)%10) + carry; //此处报NullPointerException异常;
carry = p.data<10 ? 0 : 1;
n1 = n1.next;
n2 = n2.next;
p = p.next;
}
return result;
} |
z****e 发帖数: 54598 | 2 问题出在.data上吧
Node初始化的时候会不会自动把data设置为0?
Node有几个构造器? |
o****o 发帖数: 1398 | 3 第二次循环的时候p.data是null,中间没有为p.next分配内存 |
z*****5 发帖数: 1871 | 4 谢谢回复!
我在 p = p.next; 上面一行加了 p.next = new Node(0),分配了内存,把下一个节点
的data初始化为0;
这时候变成 n2 = n2.next 这行 跳出NullPointerException异常。 |
p*g 发帖数: 141 | 5 这一小段程序 还不少bug。。
1. : if (n1==null || n2==null) return null;
2. n1 = n1.next;
n2 = n2.next;
3. 在 p = p.next; 上面一行加了 p.next = new Node(0)
不加的话,到下一个循环p是null
加的话,如果不进入下一个循环, the returned value contains one extra
node at the end.
hehe
Interesting to read such a chunk of code.
n2.
【在 z*****5 的大作中提到】 : 新手,为改变命运每天挑灯夜练,望指教,谢谢! : public static Node add(Node n1, Node n2) { : if (n1==null || n2==null) return null; : : int carry = 0; : Node result = new Node(0); : Node p = result; : : while (n1!=null || n2!=null) { : p.data = (n1==null ? n2.data : n2==null ? n1.data : (n1.data+n2.
|
g***j 发帖数: 1275 | 6 因为只生成了一个node, 所以第二次就错了。
循环里面需要每次生成一个node
n2.
【在 z*****5 的大作中提到】 : 新手,为改变命运每天挑灯夜练,望指教,谢谢! : public static Node add(Node n1, Node n2) { : if (n1==null || n2==null) return null; : : int carry = 0; : Node result = new Node(0); : Node p = result; : : while (n1!=null || n2!=null) { : p.data = (n1==null ? n2.data : n2==null ? n1.data : (n1.data+n2.
|
g***j 发帖数: 1275 | 7 因为只生成了一个node, 所以第二次就错了。
循环里面需要每次生成一个node
n2.
【在 z*****5 的大作中提到】 : 新手,为改变命运每天挑灯夜练,望指教,谢谢! : public static Node add(Node n1, Node n2) { : if (n1==null || n2==null) return null; : : int carry = 0; : Node result = new Node(0); : Node p = result; : : while (n1!=null || n2!=null) { : p.data = (n1==null ? n2.data : n2==null ? n1.data : (n1.data+n2.
|
z*****5 发帖数: 1871 | 8 您的1,2是什么意思?
上面已经update过了,分配过内存了,new了一个新节点,但之后变成n2=n2.next这行
出异常。
【在 p*g 的大作中提到】 : 这一小段程序 还不少bug。。 : 1. : if (n1==null || n2==null) return null; : 2. n1 = n1.next; : n2 = n2.next; : 3. 在 p = p.next; 上面一行加了 p.next = new Node(0) : 不加的话,到下一个循环p是null : 加的话,如果不进入下一个循环, the returned value contains one extra : node at the end. : hehe : Interesting to read such a chunk of code.
|