import java.util.*;
class CalendarNO {
int year;
int month;
int day=0;
int yeardy;
int monthdy;
int dayjs;
int resultday=0;
int resultmonth=0;
int enddays=0;
int weekdays;
String prr;
Scanner sc=new Scanner(System.in);
public void number() {
//System.out.println("**********************欢迎使用万年历***********************");
System.out.println();
System.out.println("请输入年份:");
year=sc.nextInt();
System.out.println();
System.out.println("请输入月份:");
month=sc.nextInt();
System.out.println("\t");
yearsday();
}
public void yearsday() {
if((year%4==0&&year%100!=0)||year%400==0) {
for(yeardy=1900;yeardy<year;yeardy++) {
dayjs=366;
resultday=resultday+dayjs;
}
}
else {
for(yeardy=1900;yeardy<year;yeardy++) {
dayjs=365;
resultday=resultday+dayjs;
}
}
monthdays();
}
public void monthdays() {
if((year%4==0&&year%100!=0)||year%400==0) {
for(monthdy=1;monthdy<=month;monthdy++) {
prr="闰年";
switch(month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day=31;
break;
case 4:
case 6:
case 9:
case 11:
day=30;
break;
case 2:
day=29;
break;
}
resultmonth=resultmonth+day;
} //System.out.println(month+"月\t"+"共"+day+"天");
}
else {
for(monthdy=1;monthdy<=month;monthdy++) {
prr="平年";
//System.out.println(year+"年\t"+"平年");
switch(month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day=31;
break;
case 4:
case 6:
case 9:
case 11:
day=30;
break;
case 2:
day=28;
break;
}
resultmonth=resultmonth+day;
}

}
enddays=resultday+resultmonth;
System.out.println(year+"年\t"+prr);
System.out.println();
System.out.println(month+"月\t"+"共"+day+"天");
weeks();
}
public void weeks() {
weekdays=1+enddays%7;
show();
}
public void show() {
System.out.println("\n");
System.out.println("*********************欢迎使用万年历********************");
System.out.println();
System.out.println("星期日\t"+"星期一\t"+"星期二\t"+"星期三\t"+"星期四\t"+"星期五\t"+"星期六\t");
for(int nullNo=0;nullNo<weekdays;nullNo++) {
System.out.print("\t");
}
for(int k=1;k<=day;k++) {
System.out.print(k+"\t");
if(weekdays==6) {
System.out.println();
}
}
}
}
public class Calendar {
public static void main(String[] args) {
CalendarNO jj=new CalendarNO();
jj.number();
}}
这个程序的功能是一个万年历,但我老做不对,所以向高手请教,看我写的程序哪里有错误,我可是菜鸟,谢谢~~~~~~~~~~~~~

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【love_ju】截止到2008-08-02 03:30:00的历史汇总数据(不包括此帖):
    发帖的总数量:1                        发帖的总分数:20                       每贴平均分数:20                       
    回帖的总数量:6                        得分贴总数量:2                        回帖的得分率:33%                      
    结贴的总数量:1                        结贴的总分数:20                       
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    敬礼!

    取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=love_ju
      

  2.   

    if((year%4==0&&year%100!=0) ¦ &brvbaryear%400==0) 中的brvbaryear是什么?
      

  3.   


    public class PrintCalendar { /**
     * @param args
     */
    public static void main(String[] args) {
    System.out.println("******************欢 迎 使 用 万 年 历******************");
    Scanner input = new Scanner(System.in);
    System.out.print("\n请选择年份: ");
    int year = input.nextInt();
    System.out.print("\n请选择月份: ");
    int month = input.nextInt();
    System.out.println(); int days = 0; // 存储当月的天数
    boolean isRn;
    /* 判断是否是闰年 */
    if (year % 4 == 0 && !(year % 100 == 0) || year % 400 == 0) { // 判断是否为闰年
    isRn = true; // 闰年
    } else {
    isRn = false;// 平年
    } /* 计算输入的年份之前的天数 */
    int totalDays = 0;
    for (int i = 1900; i < year; i++) {
    /* 判断闰年或平年,并进行天数累加 */
    if (i % 4 == 0 && !(i % 100 == 0) || i % 400 == 0) { // 判断是否为闰年
    totalDays = totalDays + 366; // 闰年366天
    } else {
    totalDays = totalDays + 365; // 平年365天
    }
    } /* 计算输入月份之前的天数 */
    int beforeDays = 0;
    for (int i = 1; i <= month; i++) {
    switch (i) {
      case 1:
      case 3:
      case 5:
      case 7:
      case 8:
      case 10:
      case 12:
    days = 31;
    break;
      case 2:
    if (isRn) {
    days = 29;
    } else {
    days = 28;
    }
    break;
      default:
    days = 30;
    break;
    }
    if (i < month) {
    beforeDays = beforeDays + days;
    }
    }
    totalDays = totalDays + beforeDays; // 距离1900年1月1日的天数 /* 计算星期几 */
    int firstDayOfMonth; // 存储当月第一天是星期几:星期日为0,星期一~星期六为1~6
    int temp = 1 + totalDays % 7; // 从1900年1月1日推算
    if (temp == 7) { // 求当月第一天
    firstDayOfMonth = 0; // 周日
    } else {
    firstDayOfMonth = temp;
    } /* 输出日历 */
    System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
    for (int nullNo = 0; nullNo < firstDayOfMonth; nullNo++) {
    System.out.print("\t"); // 输出空格
    }
    for (int i = 1; i <= days; i++) {
    System.out.print(i + "\t");
    if ((totalDays + i - 1) % 7 == 5) { // 如果当天为周六,输出换行
    System.out.println();
    }
    }
    }
    }