如何测试某种输入格式

时间:2013-11-05 20:34:22

标签: java input format

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

integer integer integer

使用:

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

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

2 个答案:

答案 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也有一个有效的观点。除非你只是寻找三个一位数的整数,否则你需要他的模式。