0

我正在尝试测试来自标准输入的下一行输入是否具有以下格式:

integer integer integer

和:

while(scanner.hasNext("\\d \\d \\d")){

如果这是格式,那么我将读取整数并在 while 循环中对它们进行处理。如果下一行不是那种格式,那么我知道要做其他事情,所以循环会中断。但是,我的代码永远不会进入 while 循环。我没有正确指定正则表达式的行格式吗?

4

2 回答 2

2

很可能,您的意思是使用以下正则表达式:

while(scanner.hasNext("\\d+ \\d+ \\d+"))

您的正则表达式专门检查一位数。

于 2013-11-05T20:36:18.083 回答
0

对于诸如 之类的输入1 2 3hasNext(String pattern)将只检查第一个标记,即1,它与您的模式不匹配。
您可以通过稍微不同的方式完成您正在尝试做的事情:

Scanner scanner = new Scanner(System.in);
String line;
while ((line = scanner.nextLine()).matches("\\d \\d \\d")) {
    System.out.println("A match!: " + line);
}

@Dolda2000 也有道理。除非您只寻找三个个位数的整数,否则您需要他的模式。

于 2013-11-05T20:51:26.730 回答