BK网络学院

首页搜索登录
首页业界网页平面多媒体程序数据库办公工具服务器系统网络安全站长认证壁纸
加入收藏 | 网站地图 | | RSS | WAP
你好,游客 登录 注册 搜索

java经典试题:万年历

[日期:2013-10-25] 作者: 来源: [字体: ]

2.40 万年历

2.40.1 源程序

 

import Java.util.Scanner;

 

public class PrintCalendar7 {

    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;// 平年

      }

      if(isRn){

          System.out.println(year + "\t闰年");

      } else {

          System.out.println(year + "\t平年");

      }

 

      /* 计算该月的天数 */

      switch (month) {

        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;

      }

      System.out.println(month + "\t共" + days + "天");

     

      /* 计算输入的年份之前的天数 */

      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天

          }

      }

      System.out.println("输入年份距离1900年1月1日的天数:" + totalDays);

 

      /* 计算输入月份之前的天数 */

      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日的天数

       System.out.println("输入月份距离1900年1月1日的天数:" + totalDays);

        System.out.println("当前月份的天数:" + days);

 

      /* 计算星期几 */

      int firstDayOfMonth; // 存储当月第一天是星期几:星期日为0,星期一~星期六为1~6

      int temp = 1 + totalDays % 7; // 从1900年1月1日推算

      if (temp == 7) { // 求当月第一天

          firstDayOfMonth = 0; // 周日

      } else {

          firstDayOfMonth = temp;

      }

       System.out.println("该月第一天是: " + firstDayOfMonth);

 

      /* 输出日历 */

      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();

          }

      }

    }

 

2.40.2 运行结果:

 

******************欢 迎 使 用 万 年 历******************

 

请选择年份: 2008

 

请选择月份: 6

 

2008  闰年

6  共30天

输入月份距离1900年1月1日的天数:39598

当前月份的天数:30

该月第一天是: 0

星期日  星期一  星期二  星期三  星期四  星期五  星期六

1      2      3      4      5      6      7 

8      9      10      11      12    13      14 

15    16      17    18      19      20      21 

22      23      24      25    26    27      28 

29      30 

 

2.40.3 源程序揭秘

2.40.3.1 源程序介绍:该程序是一个和日期相关非常紧密的程序,主要判断某年是否是闰年,某月总共有多少天,该月距离公元纪年的天数,该月第一天是星期几,最后打印该月的日历。

2.40.3.2 源程序变量解析:

l  year:记录输入的年份。

l  month:记录输入的月份。

l  days:存储当前的天数。

l  isRn:判断是否是闰年。

l  totalDays:记录输入年份之前的天数。

l  beforeDays:记录输入月份之前的天数。

l  firstDayOfMonth:存储当月第一天是星期几,星期天为0,一到六为1~6。

2.40.3.3 源程序函数解析:

l  main()函数:程序运行的入口,其引导程序的作用。

if (year % 4 == 0 && !(year % 100 == 0) || year % 400 == 0)判断是否是闰年。

关键词:试题  万年历 

收藏 推荐 打印 | 录入:blue1000 | 阅读:
最新图文
本文评论   查看全部评论 (2)
表情: 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事/刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
第 2 楼
* 匿名 发表于 2016/12/25 13:33:22
http://www.blue1000.com/bkhtml/c149/2013-12/71427.htm 经典央视公益广告词 http://www.blue1000.com/show/19349.html 经典公益广告词集锦 http://www.blue1000.com/show/19346.html
第 1 楼
* 匿名 发表于 2016/12/24 13:27:43
http://www.blue1000.com/bkhtml/c149/2013-12/71427.htm 作文幻想天空 http://www.blue1000.com/details/zs967.html 清洁工人作文 http://www.blue1000.com/details/zs969.html