我正在为日历编写我的程序,但是,我有我日历的格式,但我不知道如何获得数字之上的日子。我想在各自的日期之上获得(周日,周一,周二,周三,周四,周五,周六)。另外,我的代码会在每个月的第一天打印出来,我不希望这样,我希望它能打印月份和年份,但我不确定我做错了什么。
package prog3;
import java.util.Scanner;
public class Prog3 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int month = 0;
int year = 0;
do {
System.out.print("Please enter a month (1-12): ");
while (!scan.hasNextInt()) {
System.out.print("The month must be an integer: ");
scan.next();
}
month = scan.nextInt();
if (month < 1 || month > 12) {
System.out.println("Value is not in range");
}
} while (month < 1 || month > 12);
do {
System.out.print("Please enter a year (2000-2100): ");
while (!scan.hasNextInt()) {
System.out.print("The year must be an integer: ");
scan.next();
}
year = scan.nextInt();
if (year < 2000 || year > 2100) {
System.out.println("Value is not in range");
}
} while (year < 2000 || year > 2100);
String monthName = "unknown";
int lastDayOfMonth = 0;
int firstDayOfMonthDayOfWeek = 0;
switch (month) {
case 1:
monthName = "January";
lastDayOfMonth = 31;
break;
case 2:
monthName = "February";
if (year / 4 == 0 && (year / 100 != 0 || year / 400 == 0)) {
lastDayOfMonth = 29;
} else {
lastDayOfMonth = 28;
}
break;
case 3:
monthName = "March";
lastDayOfMonth = 31;
break;
case 4:
monthName = "April";
lastDayOfMonth = 30;
break;
case 5:
monthName = "May";
lastDayOfMonth = 31;
break;
case 6:
monthName = "June";
lastDayOfMonth = 30;
break;
case 7:
monthName = "July";
lastDayOfMonth = 31;
break;
case 8:
monthName = "August";
lastDayOfMonth = 31;
break;
case 9:
monthName = "September";
lastDayOfMonth = 30;
break;
case 10:
monthName = "October";
lastDayOfMonth = 31;
break;
case 11:
monthName = "November";
lastDayOfMonth = 30;
break;
case 12:
monthName = "December";
lastDayOfMonth = 31;
break;
}
int day = 1;
int y = year;
int m = month;
int q = day;
if (month == 1 || month == 2) {
m = month + 12;
y = year - 1;
}
int h = (q + (int) ((26 * (m + 1)) / 10) + y + (int) (y / 4)
+ 6 * (int) (y / 100) + (int) (y / 400)) % 7;
switch (h) {
case 0:
h+=7;
System.out.println("Saturday.");
break;
case 1:
System.out.println("Sunday.");
break;
case 2:
System.out.println("Monday.");
break;
case 3:
System.out.println("Tuesday.");
break;
case 4:
System.out.println("Wednesday.");
break;
case 5:
System.out.println("Thursday.");
break;
case 6:
System.out.println("Friday.");
break;
}
int currentDay = 2 - h;
boolean done = false;
while (!done) {
for (int col = 1; col <= 7 && !done; ++col) {
if (currentDay > 0) {
System.out.printf("%2d ", currentDay);
System.out.printf(" ");
}
else {
System.out.printf(" ");
}
if (currentDay >= lastDayOfMonth) {
done = true;
}
++currentDay;
}
System.out.println();
}
}
}