Вывести день недели для программы при вводе? - PullRequest
0 голосов
/ 18 сентября 2018

Я использую операторы регистра переключателей, я должен печатать день недели после некоторых заданных входных данных в формате год / месяц / день.Вот класс, который сделан до сих пор, и что я сделал для метода printDayOfWeek() в классе Date:

class Date {

    int year, month, day;
    Date(int y, int m, int d) {
        year = y;
        month = m;
        day = d;
    }


    public int getDayOfWeek() {

        int y0 = year - (14 - month) / 12;
        int x = y0 + y0 / 4 - y0 / 100 + y0 / 400;
        int m0 = month + 12 * ((14 - month) / 12) - 2;
        int d0 = (day + x + (31 * m0) / 12) % 7;

        return d0;
    }

    public int getDaysInMonth(int month) {

        int daysInMonth = (int) (28 + (Math.floor(month / 8.0) + month) % 2 + 2 % month + 2 * Math.floor(1.0 / month));

        if (month == 2 && isLeapYear()) {
            daysInMonth += 1;
        }
        return daysInMonth;
    }


    public boolean isLeapYear() {


        boolean isLeapYear = true;

         if (year % 4 != 0) {
        isLeapYear = false;
    }
    else {  
        if (year % 100 != 0) {
            isLeapYear = true;
        }
        else if (year % 400 != 0) {
            isLeapYear = false;
        }
    else { 
            isLeapYear = true;
         }
    }
        // Task I.1

        return isLeapYear;
    }

    public void printDaysInMonth() {

        // Task I.2
    for (int i = 1; i <= 12; i++) {
        int m = getDaysInMonth(i);

        System.out.println( i + "         " + m);
    }
}

    public void printDaysInYear() {

        // Task II

    }

    public void printDayOfWeek() {

        // Task III
         int d0 = getDayOfWeek();

         switch(d0) {
             case 1:
                 System.out.println("Monday");
             case 2:
                 System.out.println("Tuesday");
             case 3:
                 System.out.println("Wednesday");
             case 4:
                 System.out.println("Thursday");
             case 5:
                 System.out.println("Friday");
             case 6:
                 System.out.println("Saturday");
             case 7:
                 System.out.println("Sunday");
         }

    }


}

Что не так с моим методом Prinddayofweek?на самом деле не знаю, что делать в этот момент, так как я новичок в переключении дел.

1 Ответ

0 голосов
/ 18 сентября 2018

Вот как должна выглядеть ваша функция printDayOfWeek (): - как вы делаете,% 7 по воскресеньям будет иметь значение 0. В дополнение к этому put put break;в конце каждого sys, чтобы остановить поток выполнения.

public void printDayOfWeek() {

        // Task III
         int d0 = getDayOfWeek();

         switch(d0) {
             case 0:
                 System.out.println("Sunday");
                 break;
             case 1:
                 System.out.println("Monday");
                 break;
             case 2:
                 System.out.println("Tuesday");
                 break;
             case 3:
                 System.out.println("Wednesday");
                 break;
             case 4:
                 System.out.println("Thursday");
                 break;
             case 5:
                 System.out.println("Friday");
                 break;
             case 6:
                 System.out.println("Saturday");
                 break;
         }

    }
...