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