JAVa万年历输出和实际不符,到底问题出在哪里??
import java.util.Scanner;//调用键盘程序
public class Month {
public static void main(String[] args){
Scanner input=new Scanner(System.in);//键盘必输入
System.out.println("************万年历*************");//键盘必输入
int year;//保存输入的年
int month;//保存输入的月
int days=0;
int totaDasys=0;//保存总的天数差
boolean isRn;//输入的是闰年保存true,否则保存false
//(常量)=input.nextInt();//键盘输入变量
System.out.println("输入年:");
year=input.nextInt();
System.out.println("输入月:");
month=input.nextInt();
if ((year%400==0)||(year%4==0&&year%100!=0)
)
{isRn=true;
}else
{isRn=false;}
if (isRn)
{System.out.println("是闰年");
}else
{System.out.println("非闰年");}
//计算年的总天数
for(int i=1900;i<year;i++){
if((i%400==0)||(i%4==0&&i%100!=0)){
totaDasys+=366;
}else{totaDasys+=365;}
}
//计算输入月份之前的天数和
for (int i=1; i<=month; i++){
if (month==1||month==3||month==5||month==7||month==8||month==10||month==12){
days=31;
}else if (month==2){
if (isRn){
days=29;
}else{
days=28;}
}else if(month==4||month==6||month==9||month==11){
days=30;
}else
{System.out.println("输出有误");}
// System.out.print(year+"年"+month+"月对应的天数为:"+days);
//输入月的天数保存到daysDIAN
if(i!=month){
totaDasys+=days;
}
}
//求出星期几就是前 的个数
int beforeDays;
beforeDays=1+totaDasys%7;
if(beforeDays==7){
beforeDays=0;//代表星期天,0个
}
System.out.println("星期天 星期一 星期二 星期三 星期四 星期五 星期六");
//先打印
for(int i=0;i<beforeDays;i++){
System.out.print(" ");
}
for(int i=1;i<=days;i++){
System.out.print(i+" ");
if((i+beforeDays)%7==0)
{System.out.println();
}
//满7个换行
}
//System.out.println(year+"年:"+month+"月:"+days+"日:");
}}
你输出days的循环只输出了一个月的,自然就只有一个月的数值输出了,你即是将num输入为3也是只有每行的第一个月输出。
输出days的那个循环应该根据你输入的num多次循环,大致如下
123456 for(int k = 0; k < num; k++){ int days = getMonth(i+k); // 酌情修改 for(int j = 0; j < days; j++){ // 计算相应位置输出日期 }}