Java 如何在扫描仪循环中读取回车键

Java 如何在扫描仪循环中读取回车键,java,parsing,java.util.scanner,Java,Parsing,Java.util.scanner,我有一个解析输入行的代码 Scanner in = new Scanner(System.in); while (in.hasNext()) { String s = in.next(); if (s.matches("[0-9]+")) { list.add(Integer.parseInt(s)); } } in.close(); 但当用户按Enter键时,我需要停止一个循环。如何修复它?在循环时删除 Scanner in = new Scanner

我有一个解析输入行的代码

Scanner in = new Scanner(System.in);
while (in.hasNext()) {
    String s = in.next();
    if (s.matches("[0-9]+")) {
        list.add(Integer.parseInt(s));
    }
}
in.close();

但当用户按Enter键时,我需要停止一个循环。如何修复它?

在循环时删除

Scanner in = new Scanner(System.in);
String s = in.nextLine();
if (s.matches("[0-9]+")) {
  list.add(Integer.parseInt(s));
}
in.close();

您的问题在循环部分,您的输入只有一个,但您必须根据字符串长度进行循环。当您试图解析为整数时,会出现
NumberFormatException
。请参见下面的示例:

Scanner in = new Scanner(System.in);
String s = in.nextLine();
List<Integer> list = new ArrayList<Integer>();

// Loop based on length of user input
for (int i = 0; i < s.length(); i++) {

    // Checking condition for every characters on user input
    if (s.substring(i, i + 1).matches("[0-9]+")) {

        // Add to list only the number part
        list.add(Integer.parseInt(s.substring(i, i + 1)));
    }
}

in.close();

for (Integer i : list) {
    System.out.println(i);
}
Scanner-in=新的扫描仪(System.in);
字符串s=in.nextLine();
列表=新的ArrayList();
//基于用户输入长度的循环
对于(int i=0;i
当用户按Enter键时停止循环是什么意思?输入示例是什么?“1 4 d asd 4d 56 2 34 fgfg6 67 234”=“1 4 56 2 34 67 234”@Alex:那么你只想输入一行,不是吗?是的,没错!只有一行,你的代码没用。它只读第一个数字。但如果我输入了这样的“123456”,我的程序只在列表中添加第一个数字(“1”)。您只需要一行,所以不需要循环,然后使用
String s=in.nextLine()
在按enter键时获取字符串,之后我不知道您将对此字符串执行什么操作