import java.util.Scanner;
public class MatchesMethodTest {
public static void main(String[] args) {
String s;
Scanner input = new Scanner(System.in);
System.out.print("Input one real number to one decimal place and one natural number(ex. 1.4 5): ");
s = input.next();
if (s.matches("\\f{1} \\d{1}$"))
System.out.print("You input correctly.");
else
System.out.print("You input incorrectly.");
}
}
用户应输入一个实数到一个小数位和一个自然数。该程序打印用户输入是否正确。因此,当我输入1.4和5时,我希望程序打印“您正确输入”,但它输出“您输入不正确”。我该如何解决这个问题?
答案 0 :(得分:2)
在正则表达式中,\f
与浮点数不匹配,因为您似乎希望它执行 - 它匹配一种称为“换页符”的特殊字符。
尝试将正则表达式匹配更改为:
s.matches("\\d{1}\\.\\d{1} \\d{1}$")
检查单个数字,句点,数字,空格和最终数字。 (请注意,{1}
字词的“自然数”仅限于一位数。)
修改:您可能还需要将input.next()
更改为input.nextLine()
,因为.next()
方法只能获取第一个整数。未经测试。
答案 1 :(得分:1)
matches
mathod采用正则表达式。如果您放置\f
,则要求它与换页符匹配。
以下是参考资料:http://leepoint.net/notes-java/data/strings/40regular_expressions/25sum-regex.html