使用输入表单键盘,看它是否与格式匹配

时间:2016-09-25 18:08:12

标签: java regex string if-statement

我正在尝试编写一个从键盘获取用户输入的程序,称为年份。如果输入等于4位数年份,则输出年份。如果输入等于2位,则将其添加到2000并输出。我想使用switch语句,但仍然对如何正确格式化感到困惑。为了自己的缘故,我决定使用If / else语句。任何帮助将不胜感激!谢谢!

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    final String FULL_YEAR = "[0-9]{4}";
    final String TWO_YEAR ="[0-9]{2}";
    System.out.println("Please enter a year");
    String Year = scan.next();

    if (Year.matches(FULL_YEAR)) {
        System.out.println("The year is " + Year);
    } else {
        System.out.println("Invalid Year");
    } if (Year.matches(TWO_YEAR)) {
        System.out.println("The year is " + 2000+Year);
    }
}

3 个答案:

答案 0 :(得分:1)

只需使用其他if。看起来你几乎就在那里。将其更改为:

    if (Year.matches(FULL_YEAR))
    {
        System.out.println("The year is " + Year);
    }
    else if (Year.matches(TWO_YEAR))
    {
        System.out.println("The year is " + 2000 + Year);
    }
    else
    {
        System.out.println("Invalid Year");
    }

另外,如果使用java命名约定,您的代码将更容易阅读。特别是,变量不应以大写字母开头(即Year应为year)。完成后,您还应该关闭扫描仪(scan.close())。

答案 1 :(得分:1)

阅读您的代码。如果第一个条件与YY格式匹配,则会打印出Invalid year无效的事项。

使用if-else语句,如下所示:

if (Year.matches(FULL_YEAR)) {
    System.out.println("The year is " + Year);
} else if (Year.matches(TWO_YEAR)) {
    System.out.println("The year is " + 20 + Year);
} else {
    System.out.println("Invalid Year");
}

顺便说一下,您打算输出例如2016 (20 + Year)而不是200016 (2000 + Year),因为两者都在{{1}中表示为字符串}} 方法。其中的运算符println()连接字符串而不是添加数字。 +2000都是不同的数据类型。

添加字符串和整数使用以下任何一个:

Year

还有一件事:不要忘记在System.out.println("The year is " + (2000 + Integer.parseInt(Year))); System.out.println("The year is " + 20 + Year);

不再需要资源时关闭资源

答案 2 :(得分:0)

switch语句将其表达式中的String对象与每个case标签关联的表达式进行比较,就像它使用String.equals方法一样;因此,String语句中switch个对象的比较区分大小写。 Java编译器通常使用switch语句从String语句生成比从链式if-then-else语句更高效的字节码。
 Reference URL