输出的时候出现了问题,请各位帮忙看一下
题:输入年份以及月份,大于1900时打印出该年该月份的日历
思路:求1900年到输入年份之间的累计天数以及1月到输入月份之间的累计天数。得到1900-1-1到输入年月之前所有天数,用总天数对7求余,对余数加1,该数值即为该月1号的星期。判断输入月份有多少天,打印日历。
以下是代码:
import java.util.Scanner;
public class Calendar{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int year=sc.nextInt();
int month=sc.nextInt();
int r=0;
int sum=0;
if(year<1900){
System.out.println("请输入大于或等于1900的年份");
}else{
System.out.println("==================================================");
System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int i=1900;i<year;i++){
if((i%4==0&&i%100!=0)||i%400==0){
sum+=366;
}
else{sum+=365;}
}
for(int i=1;i<=month;i++){
switch(i){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
r=31;
break;
case 4:
case 6:
case 9:
case 11:
r=30;
break;
case 2:
if ((year%4==0&&year%100!=0)||year%400==0){
r=29;}
else{
r=28;}
break;
}
if(i<month)
sum+=r;
}
System.out.println(sum);
int count=(sum+1)%7;
System.out.println(count);
for(int i=1;i<=count;i++)
System.out.print("\t");
for(int i=1;i<=r;i++){
System.out.printf("%d\t",i);
if((i+count)%7==0)
System.out.println();
}
System.out.println();
System.out.println("=================================================");
}
}
}
输出情况: