**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("\n " + monthString + " " + year + "\n---------------------------------");
System.out.printf("\n%-5s%-5s%-5s%-5s%-5s%-5s%-5s\n", "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("\n");
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版)更多
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/184527.html
標籤:Java
