zoukankan      html  css  js  c++  java
  • 第六章第三十四题(打印日历)(Print calendar)

    **6.34(打印日历)编程练习题3.21使用Zeller一致性原理来计算某天是星期几。使用Zeller的算法简化程序清单6-12以获得每月开始的第一天是星期几。

    **6.34(Print calendar) Programming Exercise 3.21 uses Zeller’s congruence to calculate the day of the week. Simplify Listing 6.12, PrintCalendar.java, using Zeller’s algorithm to get the start day of the month.
    下面是参考答案代码:

    // https://cn.fankuiba.com
    import java.util.Scanner;
    
    public class Ans6_34_page205 {
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            System.out.print("Enter full year (e.g., 2012): ");
            int year = input.nextInt();
            System.out.print("What day is January 1, "+year+" ? ");
            int week = input.nextInt();
    
            int month = 1, day = 0;
            String monthString = "";
            boolean leapYear;
    
            if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0 && year % 3200 != 0) || year % 172800 == 0)
                leapYear = true;
            else
                leapYear = false;
    
            for (; month <= 12; month++) {
                switch (month) {
                    case 1:
                        monthString = "January";
                        break;
                    case 2:
                        day += 31;
                        monthString = "February";
                        break;
                    case 3:
                        monthString = "March";
                        if (leapYear)
                            day += 29;
                        else
                            day += 28;
                        break;
                    case 4:
                        day += 31;
                        monthString = "April";
                        break;
                    case 5:
                        day += 30;
                        monthString = "May";
                        break;
                    case 6:
                        day += 31;
                        monthString = "June";
                        break;
                    case 7:
                        day += 30;
                        monthString = "July";
                        break;
                    case 8:
                        day += 31;
                        monthString = "August";
                        break;
                    case 9:
                        day += 31;
                        monthString = "September";
                        break;
                    case 10:
                        day += 30;
                        monthString = "October";
                        break;
                    case 11:
                        day += 31;
                        monthString = "November";
                        break;
                    case 12:
                        day += 30;
                        monthString = "December";
                }
                int days = (week + day) % 7;
                System.out.print("
               " + monthString + " " + year + "
    ---------------------------------");
                System.out.printf("
    %-5s%-5s%-5s%-5s%-5s%-5s%-5s
    ", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
    
                for (int n =1;n<=days;n++) {
                    System.out.printf("%-5s", "");
                }
    
                int j = 1;
                if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 ||
                        month == 12) {
                    for (; j <= 31; j++) {
                        System.out.printf("%-5d", j);
                        if ((days+j) % 7 == 0)
                            System.out.println();
                    }
                }
                else if (month == 2 && leapYear) {
                    for (; j <= 29; j++) {
                        System.out.printf("%-5d", j);
                        if ((days+j) % 7 == 0)
                            System.out.println();
                    }
                }
                else if (month == 2) {
                    for (; j <= 28; j++) {
                        System.out.printf("%-5d", j);
                        if ((days+j) % 7 == 0)
                            System.out.println();
                    }
                }
                else {
                    for (; j <= 30; j++) {
                        System.out.printf("%-5d", j);
                        if ((days + j) % 7 == 0)
                            System.out.println();
                    }
                }
                System.out.print("
    ");
                switch (days) {
                    case 0:
                        System.out.print("Sun");break;
                    case 1:
                        System.out.print("Mon");break;
                    case 2:
                        System.out.print("Tue");break;
                    case 3:
                        System.out.print("Wed");break;
                    case 4:
                        System.out.print("Thu");break;
                    case 5:
                        System.out.print("Fri");break;
                    case 6:
                        System.out.print("Sat");
                }
                System.out.println(" starts on the first day of "+monthString);
            }
        }
    }
    
    

    适用Java语言程序设计与数据结构(基础篇)(原书第11版)Java语言程序设计(基础篇)(原书第10/11版)更多

  • 相关阅读:
    设置EntityFramework中decimal类型数据精度
    关于vue中的nextTick深入理解
    解决使用VS2013创建的MVC项目在VS2015中打开的各种问题
    mysql免安装版的下载与安装
    酷狗缓存文件kgtemp的加密方式
    PowerDesigner反向生成物理数据模型
    VISUAL STUDIO 2012下的OPENCV 2.4.7安装过程
    讲解DLL内容的比较详细的站点
    strcpy_s与strcpy的区别
    【原创】在VS2012中采用C++中调用DLL中的函数(4)
  • 原文地址:https://www.cnblogs.com/in2013/p/12943109.html
Copyright © 2011-2022 走看看