【发布时间】:2017-05-28 05:37:37
【问题描述】:
目前,我正在编写一个程序,要求用户输入日、月、年。然后程序检查日期是否有效。但是,对于二月,当输入是闰年时,我无法让它输出正确的响应。
import javax.swing.*;
public class ValidDate{
public static void main(String[]args){
int day,month,year;
day = Integer.parseInt(JOptionPane.showInputDialog("Enter a day"));
month = Integer.parseInt(JOptionPane.showInputDialog("Enter a month"));
year = Integer.parseInt(JOptionPane.showInputDialog("Enter a year"));
switch(month){ //this statement will check whether or not the days are valid
case 1:
if ( day >= 1 && day <= 31 ){
System.out.println("Date is valid");
}
else{
System.out.println("Date is not valid");
}
break;
case 2:
if ( day >= 1 && day <= 28 || month % 4 == 0 && day >= 1 && day <= 29 ){ //look at
System.out.println("Date is valid");
}
else{
System.out.println("Date is not valid");
}
case 3:
if ( day >= 1 && day <= 31 ){
System.out.println("Date is valid");
}
else{
System.out.println("Date is not valid");
}
case 4:
if ( day >= 1 && day <= 30 ){
System.out.println("Date is valid");
}
else{
System.out.println("Date is not valid");
}
case 5:
if ( day >= 1 && day <= 31 ){
System.out.println("Date is valid");
}
else{
System.out.println("Date is not valid");
}
case 6:
if ( day >= 1 && day <= 30 ){
System.out.println("Date is valid");
}
else{
System.out.println("Date is not valid");
}
case 7:
if ( day >= 1 && day <= 31 ){
System.out.println("Date is valid");
}
else{
System.out.println("Date is not valid");
}
case 8:
if ( day >= 1 && day <= 31 ){
System.out.println("Date is valid");
}
else{
System.out.println("Date is not valid");
}
case 9:
if ( day >= 1 && day <= 30 ){
System.out.println("Date is valid");
}
else{
System.out.println("Date is not valid");
}
case 10:
if ( day >= 1 && day <= 31 ){
System.out.println("Date is valid");
}
else{
System.out.println("Date is not valid");
}
case 11:
if ( day >= 1 && day <= 30 ){
System.out.println("Date is valid");
}
else{
System.out.println("Date is not valid");
}
case 12:
if ( day >= 1 && day <= 31 ){
System.out.println("Date is valid");
}
else{
System.out.println("Date is not valid");
}//case ended
}
}
}
我输入闰年得到的输出是
Date is not valid
Date is valid
Date is valid
Date is valid
Date is valid
Date is valid
Date is valid
【问题讨论】:
-
您在大多数情况下都忘记了
break;。 -
对于闰年,您正在验证月份 % 4 == 0 ?? , 验证应该在年 ((year % 4 == 0) && (year % 100 != 0)) || (年 % 400 == 0)
-
完美。谢谢