这个程序是为了区分输入值是否正确

时间:2011-10-27 15:16:51

标签: java

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时,我希望程序打印“您正确输入”,但它输出“您输入不正确”。我该如何解决这个问题?

2 个答案:

答案 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