扫描仪 - 空白 (Java)

Scanner - Whitespace (Java)

我想听取用户的一些意见。

输入1:1;输入2:2;输入 3:3;输入n:n

但是,如果用户输入 2 个数字,扫描器也会读取它!

输入1:1_2 2被读取。

如何防止用户通过输入白色 space 来存储第 n 个值?

使用正则表达式或模式从行中获取数字。如果你想抛出异常:

                Pattern pattern = Pattern.compile("\d+");
                String s = scanner.nextLine(pattern);
                System.out.println(s);

如果你不...

                Pattern pattern = Pattern.compile("\d+");
                String s = scanner.nextLine();
                Matcher matcher = pattern.matcher(s);
                if (matcher.find()) {
                    System.out.println(s.substring(matcher.start(), matcher.end()));
                } else {
                    // TODO The user didn't give us a number...
                }

您可以使用 BufferedReader 或使用 sc.nextLine() 并转换为整数。 如果你想放弃第二个,

String v = sc.nextLine() + " ";
int i = Integer.parseInt(v.substring(0,v.indexOf(" "));