我想解决一些链表问题,但我不能从控制台输入,我不知道我在哪里做错了。
我的代码做错了什么:
import java.util.*;
class ScannerInputLinkedList{
static class Node{
int data;
Node next;
}
void insertNode(Node head, int data){
Node curr = head;
Node temp = new Node();
temp.data = data;
temp.next = null;
while(curr.next!=null){
curr = curr.next;
}
curr.next = temp;
System.out.print(curr.data+"->");
}
System.out.println();
public static void main(String[] args) {
ScannerInputLinkedList obj = new ScannerInputLinkedList();
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
int x;
Node head = new Node();
while(t-- > 0){
x = sc.nextInt();
obj.insertNode(head, x);
}
}
}
你的代码有个小问题。打印语句(位于main方法上方)在任何方法之外。事实上,它根本不需要。只需删除它并在第19行将System.out.print(…)更改为System.out.println(…)。这将使你的代码没有错误。
这个解决方案是针对你的问题,你不能得到输入。除此之外,还不清楚你想要达到什么目的。如果您试图向链表添加节点,则需要重新检查逻辑。您的代码正在创建一个已经有节点的列表,附加到它,但您正在打印节点的数据,其下一个是新节点。
对于输入[t = 1, x = 3],代码打印0->。这个"0"是输入集的第一个节点的数据,新节点将是第二个节点。
无论如何,只是为了解决你的问题,不能采取输入,这是正确的代码。您可以使用IDE,如netbeans或eclipse来快速识别代码中的错误。
import java.util.*;
class ScannerInputLinkedList{
static class Node{
int data;
Node next;
}
void insertNode(Node head, int data){
Node curr = head;
Node temp = new Node();
temp.data = data;
temp.next = null;
while(curr.next!=null){
curr = curr.next;
}
curr.next = temp;
System.out.println(curr.data+"->");
}
public static void main(String[] args) {
ScannerInputLinkedList obj = new ScannerInputLinkedList();
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
int x;
Node head = new Node();
while(t-- > 0){
x = sc.nextInt();
obj.insertNode(head, x);
}
}
}