我正在尝试编写一个从键盘获取用户输入的程序,称为年份。如果输入等于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);
}
}
答案 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