如何阅读扫描仪循环中的Enter键

时间:2013-11-20 08:56:39

标签: 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键时我需要停止循环。如何解决?

2 个答案:

答案 0 :(得分:0)

删除While循环

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

答案 1 :(得分:0)

你的问题出现在循环部分,输入只有一个,但你必须根据字符串长度进行循环。当你试图解析为整数时,它将出现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);
}