如何在Java的单/双链表中使用扫描器进行控制台输入(没有集合)



我想解决一些链表问题,但我不能从控制台输入,我不知道我在哪里做错了。

我的代码做错了什么:

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);
    }
}
}

相关内容

  • 没有找到相关文章

最新更新