用Java创建日历(Netbeans)

时间:2018-02-25 21:18:43

标签: java

我正在为日历编写我的程序,但是,我有我日历的格式,但我不知道如何获得数字之上的日子。我想在各自的日期之上获得(周日,周一,周二,周三,周四,周五,周六)。另外,我的代码会在每个月的第一天打印出来,我不希望这样,我希望它能打印月份和年份,但我不确定我做错了什么。

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

}

0 个答案:

没有答案