该方法主要是java语言通过witch来解决问题,并不是该问题的最优选择,只是该问题的其中一种解法。
该解法考虑了年份是不是闰年及判断用户输入的数据是不是不合理的数据,并给出相应的提示。
import java.util.Scanner;
class SwitchCaseTest
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
int year, month, day;//声明年,月,日三个变量
int sumDay = 0;//用于存放该年的总天数
int correctDay = 0;//用于存放该月的正确天数
System.out.print("请依次输入年、月、日:");
//用户输入年、月、日三组数据
year = scan.nextInt();
month = scan.nextInt();
day = scan.nextInt();
if(year <= 0 || (month <= 0 || month >=13) || day <= 0){//判断该年、月、日是否合乎常理
System.out.println("年月日输入有误");
}else{
switch(month){//计算出该月正确的天数
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
correctDay = 31;
break;
case 2:
if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))//如果是闰年
correctDay = 29;
else//如果不是闰年
correctDay = 28;
break;
case 4:
case 6:
case 9:
case 11:
correctDay = 30;
break;
}
if(day > correctDay){//如果用户输入的日期大于该月应有的日期,则输出提示
System.out.println(year + "年" + month + "月没有" + day + "号");
}else{
//将每月的天数累加
switch(month){
case 12:
sumDay += 30;
case 11:
sumDay += 31;
case 10:
sumDay += 30;
case 9:
sumDay += 31;
case 8:
sumDay += 31;
case 7:
sumDay += 30;
case 6:
sumDay += 31;
case 5:
sumDay += 30;
case 4:
sumDay += 31;
case 3:
if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
sumDay += 29;
else
sumDay += 28;
case 2:
sumDay += 31;
case 1:
sumDay += day;
}
System.out.println(year + "年" + month + "月" + day + "日,是" + year + "年的第" + sumDay + "天");
}
}
}
}
运行结果:
对上述代码有问题或者是BUG,欢迎提出~~