我有一个解析输入行的代码。
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键时我需要停止循环。如何解决?
答案 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);
}