并且在控制台能判断出是否为闰年,计算出月份的天数,距离1900年1月1日的天数,计算出月份的第一天是星期几,按照格式在控制台输出;
并且注释清楚;
希望各位帮忙理解下 
     
       可以加我QQ:249930954
     或者发邮件:[email protected]   [email protected] 
 愿与各位高手结缘!

解决方案 »

  1.   

    package com.wxws.sms;
    import java.util.Scanner;
    public class wannianli {
      /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub // 第一阶段:
    Scanner input = new Scanner(System.in);
    System.out.println("请输入你的年份:");
    int year = input.nextInt();
    System.out.println("请输入你的月份:");
    int month = input.nextInt();
    int days = 0;// 保存月份的天数
    boolean ifRn = false;//
    // String ifIsRn="平年";
    int totalDays = 0;// 保存总天数
    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
    ifRn = true;
    // ifIsRn="闰年";
    }
    // 第二阶段:
    switch (month) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
    days = 31;
    break;
    case 2:
    if (ifRn) {
    days = 29;
    } else {
    days = 28;
    }
    break;
    case 4:
    case 6:
    case 9:
    case 11:
    days = 30;
    break;
    }
    // 第三阶段
    // 1、计算从1900.1.1到你所输入的年份的前一年的总天数
    for (int startYear = 1900; startYear < year; startYear++) {
    if (startYear % 4 == 0 && startYear % 100 != 0
    || startYear % 400 == 0) {
    totalDays += 366;
    } else {
    totalDays += 365;
    }
    }
    // 2、计算从1月份到你所输入的月份之前的一个月的天数
    for (int i = 1; i < month; i++) {
    switch (i) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
    totalDays += 31;
    break;
    case 2:
    if (ifRn) {
    totalDays += 29;
    } else {
    totalDays += 28;
    }
    break;
    case 4:
    case 6:
    case 9:
    case 11:
    totalDays += 30;
    break;
    } }
    totalDays += 1;
    System.out.println(totalDays);
    // 第四个阶段
    int weekDay = totalDays % 7;

    System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
    for (int i = 0; i < weekDay; i++) {
    System.out.print("\t");
    } for (int i = 1; i <= days; i++) { System.out.print(i + "\t");
    if ((i+weekDay)%7==0) {
    System.out.println();
    }
    } }}
      

  2.   

    package 万年历;
    import java.util.*;
    public class N02 { public static void main(String[] args) {
    // TODO Auto-generated method stub
           Scanner  s = new Scanner(System.in);
           System.out.println("请输入年份:");
           int year =s.nextInt();
           System.out.println("请输入月份:");
           int month =s.nextInt();       boolean isRn;
           int day=0;
           //判断是否是闰年
           if(year%4==0&&year%100!=0||year%400==0)
           {
            isRn= true;
           }
           else
           {
            isRn=false;
           }       int total=0;//输入年份之前总天数
           for (int i = 1900; i < year; i++) {
            if(i%4==0&&i%100!=0||i%400==0)
            {
            total=total+366;
            }
            else
            {
            total=total+365;
            } }
           System.out.println(total);
           int monthDay=0;//输入月份之前的天数
           for(int i=1;i<=month;i++)
           {
           switch(i)
           {
           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:
            if(isRn)
            {
            day=29;
            }
            else
            {
            day=28;        }       }
           if(i<month)
           {
            monthDay=monthDay+day;       }
           }
           System.out.println(monthDay);
           total=total+monthDay;//距离1900年1月1日的天数
    //       System.out.println(total);
           int firstDay;//存储当月第一天
           int temp = 1+total%7;
           if(temp==7)
           {
            firstDay=0;
           }
           else
           {
            firstDay=temp;
           } /* 输出日历 */
    System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
    for (int nullNo = 0; nullNo < firstDay; nullNo++) {
    System.out.print("\t"); // 输出空格
    }
    for (int i = 1; i <= day; i++) {
    System.out.print(i + "\t");
    if ((total + i) % 7 == 6) { // 如果当天为周六,输出换行
    System.out.println();
    }
    }
    }}
      

  3.   


    package DK_Date;import java.util.Date;public class DK_Date { public int Year; // 年份
    public int Month; // 月份
    public int Day; // 日期
    public int Days; // 当月有几天
    public int Week; // 当月第一天为周几 public void getCurDate() {
    Date date = new Date(); this.Year = date.getYear() + 1900;
    this.Month = date.getMonth() + 1;
    this.Day = date.getDate();
    } /**
     * 判断是否为闰年
     * 
     * @param year
     * @return 如果为真则为闰年,反之为平年
     */
    public boolean isRun(int year) {
    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0 )
    return true;
    return false;
    } /**
     * 计算当月天数
     * 
     * @param month
     *            月份
     * @param year
     *            年份
     */
    public void getDays(int month, int year) {
    switch (month) {
    case 2:
    if (isRun(year))
    this.Days = 29;
    else
    this.Days = 28;
    break;
    case 4:
    case 6:
    case 9:
    case 11:
    this.Days = 30;
    break;
    default:
    this.Days = 31;
    break;
    }
    } /**
     * 计算当月第第一天是一年中的第几天
     * 
     * @param month
     * @param year
     * @return
     */
    public int getYearDays(int month, int year) {
    int days = 1;
    for (int i = 1; i < month; i++) {
    switch (i) {
    case 2:
    if (isRun(year))
    days += 29;
    else
    days += 28;
    break;
    case 4:
    case 6:
    case 9:
    case 11:
    days += 30;
    break;
    default:
    days += 31;
    break;
    }
    }
    return days;
    } /**
     * 计算1900年到当年1月1日经过了多少天
     * 
     * @param year
     *            当前年份
     * @return
     */
    public int getYearsDay(int year) {
    int days = 0;
    for (int i = 1900; i < year; i++) {
    if (isRun(i))
    days += 366;
    else
    days += 365;
    }
    return days;
    } /**
     * 计算当月第一天为周几
     * 
     * @param year
     *            年份
     * @param month
     *            月份
     */
    public void getWeek(int year, int month) {
    int days = getYearsDay(year) + getYearDays(month, year);
    this.Week = days % 7 == 0 ? 7 : days % 7;
    }
    }
    package DK_Date;import java.util.Scanner;public class DateUI { private DK_Date date;
    Scanner scanner = new Scanner(System.in); public void initial() {
    date = new DK_Date();
    date.getCurDate();
    date.getWeek(date.Year, date.Month);
    date.getDays(date.Month, date.Year);
    } public void show() {
    System.out.println("◆◇◆◇◆◇    DK 万年历    ◆◇◆◇◆◇\n");
    System.out.println("北京时间:" + date.Year + "年" + date.Month + "月"
    + date.Day + "日\n");
    getShow(date.Week, date.Days);
    while (true) {
    System.out.println("\n请输入年份:");
    date.Year = scanner.nextInt();
    System.out.println("请输入月份:");
    date.Month = scanner.nextInt();
    date.getWeek(date.Year, date.Month);
    date.getDays(date.Month, date.Year);
    getShow(date.Week, date.Days);
    }
    } public void getShow(int week, int days) {
    System.out.println("周日\t周一\t周二\t周三\t周四\t周五\t周六\t");
    if (week != 7) {
    for (int i = 0; i < week; i++) {
    System.out.print("\t");
    }
    }
    for (int i = 1; i <= days; i++) {
    System.out.print(i + "\t");
    if (i % 7 == 7 - week) {
    System.out.println();
    }
    }
    }
    }package DK_Date;public class Start { public static void main(String[] args)
    {
    DateUI date = new DateUI();
    date.initial();
    date.show();
    }
    }