自己想分享里边的思路与大家分享,在里边用了switcg语句,以及if条件判断语句,进行相关的判断。隔两日问题就是,要求在程序中手动输入相关的日期,在实验中老师要求:该程序有三个输入变量month、day、year(month 、 day 和year均为整数值,并且满足:1≤month≤12,1≤day≤31和1900≤year≤2050),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上隔两天的日期。例如,输入为 2004 年11 月29 日,则该程序的输出为2004 年12 月1 日。
在程序中首先要考虑year是闰年还是平年。 判断方法就是,闰年就是世纪年可以被400整除,非世纪年可以被4整除的年份,世纪年就是像1900, 2000之类的这样的年份,闰年中首先得考虑2月有29天。非闰年2月有28天。 其次就是注意隔两天问题,像输入1999,12 ,30. 输出应该为2000 , 1, 1.这里就想说明在程序中要考虑年份以及月份的加减,还有日期的加减,我在这里是使用取余的方进行计算的,例如 输入1999,12 ,30 , 12月30号,day = (day + 2) % 31.这里除31就是因为12月有31天,几月有几天就需要除以相应的天数。month = (month + 1)%12.这里就是在每个月的最后两天,隔两日就回进入下一月。year发生变化只会在月份在十二月的时候,而且在十二月的最后两天。
这里我附上我自己写的代码,发现错误希望及时指出,本人也是菜鸟一枚。
package com.test02;
import java.util.*;
public class NextDay {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int year,month,day;
//输入年 月 日 并且进行判断。
System.out.println("请输入年份:");
year = sc.nextInt();
System.out.println("请输入月份:");
month = sc.nextInt();
System.out.println("请输入几号:");
day = sc.nextInt();
if(year>2050 || year<1900 || month>12 || month<1 || day>31 || day<1){
System.out.println("数据输入错误!!!");
}else{
if((year%4==0 && year%100!=0) || year%400==0){
//闰年
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(day+2>31){
if(month == 12 && day == 30 || day ==31)
year+=1;
month=(month+1)%12;
day = (day+2)%31;
System.out.println(year + " - " + month + " - " + day);
break;
}else{
day = (day+2)%31;
System.out.println(year + " - " + month + " - " + day);
break;
}
case 4:
case 6:
case 9:
case 11:
if(day+2>30){
month = month+1;
day = (day+2)%30;
System.out.println(year + " - " + month + " - " + day);
break;
}else{
day = day+2;
System.out.println(year + " - " + month + " - " + day);
break;
}
case 2:
if(day>29){
System.out.println("数据输入错误!!!");
break;
}
else{
if(day+2>29){
month = month+1;
day = (day+2)%29;
System.out.println(year + " - " + month + " - " + day);
break;
}else{
day = (day+2)%29;
System.out.println(year + " - " + month + " - " + day);
break;
}
}
}
}else{
//非闰年
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(day+2>31){
if(month == 12 && day == 30 || day ==31)
year+=1;
month=(month+1)%12;
day = (day+2)%31;
System.out.println(year + " - " + month + " - " + day);
break;
}else{
day = (day+2)%31;
System.out.println(year + " - " + month + " - " + day);
break;
}
case 2:
if(day>28){
System.out.println("数据输入错误!!!");
break;
}else if(day+2>28){
month = month+1;
day = (day+2)%28;
System.out.println(year + " - " + month + " - " + day);
break;
}else{
day = (day+2)%28;
System.out.println(year + " - " + month + " - " + day);
break;
}
case 4:
case 6:
case 9:
case 11:
if(day+2>30){
month = month+1;
day = (day+2)%30;
System.out.println(year + " - " + month + " - " + day);
break;
}else{
day = (day+2)%30;
System.out.println(year + " - " + month + " - " + day);
break;
}
}
}
}
}
}
这里是我自己实验的截图,进行了闰年,平年,以及错误的实验截图。