java - 澄清一下这个链表的实现

标签 java linked-list

我尝试使用以下代码在java中实现单链表。我编写了代码,以便用户输入任意数量的数字,最后当他点击键盘上的回车键时,程序会显示他输入的所有数字。

例如,如果用户输入类似 12345548963256987451236589745 的内容,然后输入应产生以下结果“12345548963256987451236589745”。

我知道我可以简单地使用 String 或 BigInteger 来完成此操作,但我只是想用链接列表尝试一下。

    public static void main(String [] args)
    {
    Node start=null,end=null;
    Scanner in = new Scanner(System.in);
    char ch ;
    ch = in.next();
    while(ch.charAt(0)!='\n')
    {
        Node n = insert(ch-48);
        if(start==null)
        {
            start = n;
            end = n;
        }
        else
        {
            end.next=n;
            end = n;
        }
        ch  = in.next();
    }
    Node n = start;
    while(n!=null)
    {
        System.out.print(n.data);
        n=n.next;
    }
}
    private static Node insert(int i) {

      Node n = new Node();
      n.data=i;
      n.next = null;
      return n;
     }

由于某种原因,程序将进入无限循环。我的意思是它永远不会从输入部分中出来。

我想我把这行搞砸了: ch.charAt(0)!='\n'

那么我应该改变什么?

我最初在 C 语言中尝试过这个,并尝试在 JAVA 中模仿相同的方法,它在 C 中有效,但在 JAVA 中却遇到了麻烦。

最佳答案

如果你真的想逐个字符地进行操作,你可以执行如下操作。

请注意,in.next() 将仅消耗忽略“/n”的字符,因此您应该使用 in.nextLine(),然后在空行(按下“/n”)的情况下行长度为零。

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String line = in.nextLine();
        int iter = 0;
        while (iter < line.length()) {

            // Node logic

            iter++;
            if(iter == line.length()){
                iter = 0;
                line = in.nextLine();
            }
        }
    }

关于java - 澄清一下这个链表的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56722784/

相关文章:

java - 基于 Spring 的 Java 应用程序的用户管理和安全模块

java - 如何关闭用 Java 1.4 编写的 Swing 应用程序中所有打开的对话框?

java - Java 中两个形状/区域之间的距离?

java - 线程中出现异常 "main"java.lang.NullPointerException 错误 - Eclipse Java 链表

c - 如何证明释放链表的函数写得不好?

c - 指针如何获取变量、数组、指针、结构的地址

java - Base64 编码允许的字符

java - 当子实体被删除时,Hibernate 确实执行更新而不是删除操作

c++ - 为什么 temp->next!=NULL 有效而 temp!=NULL 在 C++ 的链表中不起作用

f# - 为什么F#列表没有尾部指针