| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1511 人关注过本帖
标题:打印有时出错
只看楼主 加入收藏
倾听心跳
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:39
专家分:153
注 册:2016-6-22
结帖率:60%
收藏
 问题点数:0 回复次数:0 
打印有时出错
有些年月份打印出来格式出错
程序代码:
import java.util.Scanner;

public class Calendar {

    public static void main(String[] args) {
        @SuppressWarnings("resource")
        Scanner input = new Scanner(System.in);
        System.out.print("请输入年份: ");
        int year = input.nextInt();
        System.out.print("请输入月份: ");
        int month = input.nextInt();
        System.out.println("******************万 年 历******************");
        System.out.println("                "+year+"年"+month+"月");

        int days = 0; // 存储当月的天数
        boolean LeapYear;
        /* 判断是否是闰年 */
        if (year % 4 == 0 && !(year % 100 == 0) || year % 400 == 0) { // 判断是否为闰年
            LeapYear = true; // 闰年
        } else {
            LeapYear = false;// 平年
        }

        /* 计算输入的年份之前的天数 */
        int totalDays = 0;
        for (int i = 1970; 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 (LeapYear) {
                    days = 29;
                } else {
                    days = 28;
                }
                break;
            default:
                days = 30;
                break;
            }
            if (i < month) {
                beforeDays = beforeDays + days;
            }
        }
        totalDays = totalDays + beforeDays; // 距离1970年1月1日的天数

        /* 计算星期几 */
        int firstDayOfMonth; // 存储当月第一天是星期几:星期日为0,星期一~星期六为1~6
        int temp = 4 + totalDays % 7; // 从1970年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 ((temp - 1 + i) % 7 == 6) { // 如果当天为周六,输出换行
                System.out.println();
            }
        }
    }
}
搜索更多相关主题的帖子: System out int 闰年 case 
2017-05-18 00:09
快速回复:打印有时出错
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049226 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved