按年/月/日的顺序输入一个任意日期,在页面输出:这是这一年的第几天如:2016年1月2日 是2016年的第2天,而2016年12月31日则是2016年的第366天

  • Post author:
  • Post category:其他


import java.util.Scanner;

public class JSday {
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		System.out.println("输入年");
		int year=input.nextInt();
		System.out.println("输入月");
		int month=input.nextInt();
		System.out.println("输入日");
		int day=input.nextInt();
		int tian=0;//存储闰年,平年2月天数
		int ri = 0;//多少天
		boolean i;
		//先计算出润年,平年用存入tian
		if((year%4==0&&year%100!=0)||year%400==0) {
			i=true;
			tian=29;
			}else {
				i=false;
				tian=28;
			}
		//使用switch选择月份
		switch(month) {
		case 1:
			ri=day;
			tian=ri;
			System.out.println("这是"+year+"的第"+ri+"天");
			break;
		case 2:
			//如果2月有超过29天则报错
			if(month==2 & i==true & day>29 ) {
				System.out.println("天数错误");
				
			}else {
				ri=31+day;

				System.out.println("这是"+year+"的第"+ri+"天");
			}
			break;
		case 3:
			ri=31+tian+day;
			System.out.println("这是"+year+"的第"+ri+"天");
			break;
		case 4:
			ri=31+tian+30+day;
			System.out.println("这是"+year+"的第"+ri+"天");
			break;
		case 5:
			ri=31+tian+30+31+day;
			System.out.println("这是"+year+"的第"+ri+"天");
			break;
		case 6:
			ri=31+tian+30+31+30+day;
			System.out.println("这是"+year+"的第"+ri+"天");
			break;
		case 7:
			ri=31+tian+30+31+30+31+day;
			System.out.println("这是"+year+"的第"+ri+"天");
			break;
		case 8:
			ri=31+tian+30+31+30+31+31+day;
			System.out.println("这是"+year+"的第"+ri+"天");
			break;
		case 9:
			ri=31+tian+30+31+30+31+31+30+day;
			System.out.println("这是"+year+"的第"+ri+"天");
			break;
		case 10:
			ri=31+tian+30+31+30+31+31+30+31+day;
			System.out.println("这是"+year+"的第"+ri+"天");
			break;
		case 11:
			ri=31+tian+30+31+30+31+31+30+31+30+day;
			System.out.println("这是"+year+"的第"+ri+"天");
			break;
		case 12:
			ri=31+tian+30+31+30+31+31+30+31+30+31+day;
			System.out.println("这是"+year+"的第"+ri+"天");
			break;
		}
		
	}
}

代码冗余过高

需要注意闰年平年。

if(month>12&&month<1) {


System.out.println(“非法输入”);

}

if(month==2&&day>30) {


System.out.println(“非法输入”);

}

month–;//如果是一月份则不自增;

switch(month) {


case 12:

case 11:

day+=30;

case 10:

day+=31;

case 9:

day+=30;

case 8:

day+=31;

case 7:

day+=31;

case 6:

day+=30;

case 5:

day+=31;

case 4:

day+=30;

case 3:

day+=31;

case 2:

if((year%4==0&&year%100!=0)||year%400==0) {


day+=29;

}else {


day+=28;

}

case 1:

day+=31;

break;

}

System.out.println(“这是”+year+”年的”+day+”天”);



版权声明:本文为cnsunzy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。