以键盘录入的形式提供3个整数,按顺序分别表示为年、月、日。如果只输入一个
整数则表示年,需要判断该年是否是闰年;如果输入两个整数,则表示年和月,需要
输出该年中该月的天数;如果输入3个整数,表示为年、月、日,需要输出这一天是
星期几。
首先先整理一下解题思路
1)进行字符串输入的时候,利用String类中的split()方法,利用“,”进行分割,所以在年月日中间要用逗号隔开。然后再通过Integer.valueOf()方法,将纯数字字符串转换成整数。
2)首先先判断年份是平年还是闰年,再去判断月份,最后判断日,算出这一天是星期几。
import java.util.Scanner; public class day { public static void main(String[] args){ //a[]数组中存放的是闰年月份天数,数组的下标直接对应月份 int [] a ={0,31,29,31,30,31,30,31,31,30,31,30,31}; //b[]数组中存放的是平年月份天数,数组的下标直接对应月份 int [] b ={0,31,28,31,30,31,30,31,31,30,31,30,31}; int week =0;//定义计算周几的变量 System.out.println("请用以下形式输入整数:"); System.out.println("若只计算平年或闰年,则输入:'年'形式"); System.out.println("若只计算某年的某月有多少天,则输入:'年,月'形式"); System.out.println("若要计算某年某月的某天是周几,则输入:'年,月,日'形式"); Scanner sc = new Scanner (System.in); String s = sc.nextLine(); String[] c = s.split(","); int t = c.length; //根据c数组的长度,利用switch来做判断,分别执行不一样的程序 switch(t){ //当输入长度是1时,只有年份的输入,则是计算平年闰年 case 1: Integer year =Integer.valueOf(c[0]); if((year%4==0)&&(year%100!=0)||year%400==0){ System.out.println(year+"是闰年"); }else{ System.out.println(year+"是平年"); } break; //当输入长度是2时,只有年份以及月份的输入,则要计算当年的那个月有多少天 case 2: Integer year1 =Integer.valueOf(c[0]); Integer month1 =Integer.valueOf(c[1]); if((year1%4==0)&&(year1%100!=0)||year1%400==0){ int mon=a[month1]; System.out.println(year1+"年的"+month1+"月有"+mon+"天"); }else{ int mon=a[month1]; System.out.println(year1+"年的"+month1+"月有"+mon+"天"); } break; //当输入长度为3时,我们需要计算那天是周几 case 3: Integer year2 =Integer.valueOf(c[0]); Integer month2 =Integer.valueOf(c[1]); Integer day =Integer.valueOf(c[2]); int a1=(year2-1968-1)/4;//计算year2到1970年之间闰年的次数 int a2 = (year2-1970-1)*365+a1; //计算month之前几个月的总天数 //首先先判断是否是闰年,若是闰年,则进行一下操作 if((a2%4==0)&&(a2%100!=0)||a2%400==0){ //day2用于计算那一年月份的天数 int day2=0; //利用数组,计算前几个月的天数总值 //假如输入的是第五个月的某一天,则先要计算前四个月有多少天,既然是计算闰年,则是使用闰年的那个数组 for(int i =1;i<month2;i++){ day2+=a[i]; } //week等于年份天数+月份天数+当前月的第几天,由于1970年1月1号是周四,所以加上4。再利用取余的方法得到星期 week=(a2+day2+day+4)%7; if(week==0){ System.out.println("这天是星期天"); }else{ System.out.println(year2+"年的"+month2+"月的"+day+"日是星期"+week); } }else{ //day2用于计算那一年月份的天数 int day2=0; //利用数组,计算前几个月的天数总值 //若计算的是第五个月的某一天,则先要计算前四个月有多少天 for(int i =1;i<month2;i++){ day2+=b[i]; } //week等于年份天数+月份天数+当前月的第几天,由于1970年1月1号是周四,所以加上4。再利用取余的方法得到星期 week=(a2+day2+day+4)%7; if(week==0){ System.out.println("这天是星期天"); }else{ System.out.println(year2+"年的"+month2+"月的"+day+"日是星期"+week); } } break; default: System.err.println("请正确输入数据"); break; } } }