gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:03:38 25 4
gpt4 key购买 nike

我尝试使用以下代码在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/

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