我正在尝试测试来自标准输入的下一行输入是否具有以下格式:
integer integer integer
和:
while(scanner.hasNext("\\d \\d \\d")){
如果这是格式,那么我将读取整数并在 while 循环中对它们进行处理。如果下一行不是那种格式,那么我知道要做其他事情,所以循环会中断。但是,我的代码永远不会进入 while 循环。我没有正确指定正则表达式的行格式吗?
很可能,您的意思是使用以下正则表达式:
while(scanner.hasNext("\\d+ \\d+ \\d+"))
您的正则表达式专门检查一位数。
对于诸如 之类的输入1 2 3
,hasNext(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 也有道理。除非您只寻找三个个位数的整数,否则您需要他的模式。