我尝试使用以下代码在Java中实现单链列表。我编写了这样的代码,以便用户输入任意数量的数字,最后,当他点击键盘程序上的Enter键时,将显示他输入的所有数字。
例如,如果用户输入了12345548963256987451236589745之类的内容,那么回车应生成此结果“ 12345548963256956987451236589745”。
我知道我可以简单地使用String或BigInteger来做到这一点,但我只想尝试使用链接列表来进行此操作。
private func handleLogoutCellTap() {
logoutUseCase?.logout() { [weak self] (result) in
guard let self = self else { return }
DispatchQueue.main.async { //here.....
switch result {
//rest of the code....
}
}
}
}
由于某种原因,程序将进入无限循环。我的意思是说它永远不会脱离输入部分。
我想我把这一行弄乱了: ch.charAt(0)!='\ n'
那我应该改变什么?
最初,我使用C语言进行了尝试,并尝试在JAVA中进行模拟,但在C语言中却有效,但是在JAVA中却遇到了麻烦。
答案 0 :(得分:0)
如果您真的想逐个字符地进行搜索,可以执行以下操作。
请注意,in.next()将仅使用忽略'/ n'的字符,因此,如果空白行(按下'/ n')行长为零,则应使用in.nextLine()。>
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();
}
}
}
答案 1 :(得分:0)
在此示例中,没有必要使用Scanner
。您可以直接从System.in
(使用InputStream::read()
方法)读取字节,并在收到非数字字符后立即停止。
package misc;
import java.io.IOException;
public class Node {
private int data;
private Node next;
public static void main(String[] args) throws IOException {
Node start = null, end = null;
int ch;
while(Character.isDigit(ch = System.in.read())) { // or: while((ch = System.in.read()) != '\r') {
Node n = insert(ch - 48);
if (start == null) {
start = n;
end = n;
} else {
end.next = n;
end = n;
}
}
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;
}
}
示例输入: “ 12345”
示例输出: 12345