gpt4 book ai didi

java - 为什么代码只显示 `1 2` ?

转载 作者:行者123 更新时间:2023-11-30 07:52:17 25 4
gpt4 key购买 nike

我想测试我的程序,为了测试它,我只需将一个 ListNode 的整数转换为 String 并将这些转换连接起来。例如,如果我有:

ListNode object1;
object1 = new ListNode(2);
object1 = new ListNode(4);
object1 = new ListNode(3);

addTwoNumbers() 的输出应该是“243”(该方法的目标不同,我只是想测试它),但它给了我“1 2”。而且 Eclipse 也不会在此程序中运行调试器,不知道为什么。

public class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}

public String addTwoNumbers(ListNode l1, ListNode l2) {
String l1Digits = "";
String l2Digits = "";

while(l1 != null) {
l1Digits += Integer.toString(l1.val) + "";
l1 = l1.next;
}

while(l2 != null) {
l2Digits += Integer.toString(l2.val) + "";
l2 = l2.next;
}
return l1Digits;
}


class Tester {

public void main(String[] args) {
ListNode object1;
object1 = new ListNode(2);
object1 = new ListNode(4);
object1 = new ListNode(3);

ListNode object2;
object2 = new ListNode(5);
object2 = new ListNode(6);
object2 = new ListNode(4);

System.out.println(addTwoNumbers(object1, object2));

}
}
}

最佳答案

而不是这个:

ListNode object1;
object1 = new ListNode(2);
object1 = new ListNode(4);
object1 = new ListNode(3);

ListNode object2;
object2 = new ListNode(5);
object2 = new ListNode(6);
object2 = new ListNode(4);

看来你确实是这个意思:

ListNode object1;
object1 = new ListNode(2);
object1.next = new ListNode(4);
object1.next.next = new ListNode(3);

ListNode object2;
object2 = new ListNode(5);
object2.next = new ListNode(6);
object2.next.next = new ListNode(4);

在原始代码中,您覆盖了object1object2 的值。这相当于您的原始代码,当然不是您想要的:

ListNode object1 = new ListNode(3);
ListNode object2 = new ListNode(4);

要创建更长的列表,这可能会变得乏味。您可以创建一个辅助方法以使其更容易,例如:

ListNode createList(int...values) {
if (values.length == 0) {
return null;
}
ListNode head = new ListNode(values[0]);
ListNode node = head;
for (int i = 1; i < values.length; ++i) {
node.next = new ListNode(values[i]);
node = node.next;
}
return head;
}

这将允许您将顶部的第一个代码替换为:

ListNode object1 = createList(2, 4, 3);
ListNode object2 = createList(5, 6, 4);

顺便说一句,您的程序中还存在其他问题。在 addTwoNumbers 中,您分配给 l2Digits 但从未访问它。它似乎完全没有被使用且毫无意义。该方法只是连接第一个列表中的值并返回它,所以它并没有做任何它的名字所暗示的事情。

关于java - 为什么代码只显示 `1 2` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33189838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com