자바에서 캘린더를 표시하는 방법

Flinze

나는 현재 그 달의 날짜를 포함하여 일년의 모든 달을 표시하는 달력을 만들어야하는 문제 세트를하고 있습니다. 그러나 매달 첫 줄의 간격에 문제가 있습니다. 수업에서 우리는 switch 문만 배웠습니다. if, else, while, do-while, for 루프

내 달 중 하나에 대해 현재 표시되는 내용은 다음과 같습니다.

출력 이미지 사진은 내 입력을 보여주지 않지만 제가 쓴 것은 그해의 2016 년과 연도가 시작되는 평일의 5였습니다.

원하는 것의 출력 이미지 다시, 원하는 것의 그림. 내 문제는 아마도 내가 사용한 방정식이라고 생각합니다. int firstDayEachMonth = (daysMonth + firstDayYear) % 7; 선생님이이 방정식을 우리에게 주셨지만 작동하지 않는 것 같습니다.

보시다시피 첫 번째 줄의 공백은 왼쪽 끝까지 정렬되어야합니다.이 경우 지정된 날짜와 일치해야합니다.이 경우 1 월의 경우 1 월 1 일은 금요일에, 1 월 2 일은 토요일과 일치해야하지만 현재는 일요일과 월요일.

    import java.util.Scanner;

    public class DisplayCalendar
       {
        public static void main(String[] args)
        {
        //Create a new scanner 
        Scanner input = new Scanner(System.in);

        // Prompt user to enter year 
        System.out.print("Enter a year: ");
        int year = input.nextInt();

        // Prompt user to enter first day of the year
        System.out.print("Enter the weekday that the year starts: ");
        int firstDayYear = input.nextInt();

        // A for loop that prints out each month
        for(int month = 1; month <= 12; month++)
        {
            // Set the value of the amount of days in a month
            int daysMonth = 0;

            // Set value of the month 
            String monthDisplay = "";   

            // Find name of each month and number of days
            switch(month)
            {
                case 1: monthDisplay = "January"; 
                    daysMonth = 31;
                    break;

                case 2: 
                    monthDisplay = "February";
                    int leapYear = 0;
                    while (leapYear > -1)
                    {   
                        // Count all years that are divisible by 4 to be a leap year.
                        leapYear += 4;

                        // If the year inputted is a leap year, the days of the month will be 29.
                        if (year == leapYear)
                        {
                            daysMonth = 29;
                            break;
                        }

                        else 
                        {
                            daysMonth = 28;
                        }
                    }
                    break;

                case 3: monthDisplay = "March";
                    daysMonth = 31;
                    break;

                case 4: monthDisplay = "April";
                    daysMonth = 30;
                    break; 

                case 5: monthDisplay = "May";
                    daysMonth = 31;
                    break;

                case 6: monthDisplay = "June";
                    daysMonth = 30;
                    break; 

                case 7: monthDisplay = "July";
                    daysMonth = 31;
                    break;

                case 8: monthDisplay = "August";
                    daysMonth = 31;
                    break;

                case 9: monthDisplay = "September";
                    daysMonth = 30;
                    break;

                case 10: monthDisplay = "October";
                    daysMonth = 31;
                    break;

                case 11: monthDisplay = "November";
                    daysMonth = 30;
                    break;

                case 12: monthDisplay = "December";
                    daysMonth = 31;
                    break; 

                // If the month is not recognized, dialog box will be displayed, and then exits program. 
                default : System.out.print("Invalid: Your month is not recognized. ");
                    System.exit(0); 

            }
            // Display the month and year
            System.out.println("                      "+ monthDisplay + " " + year);

            // Display the lines
            System.out.println("_____________________________________");

            // Display the days of the week
            System.out.println("Sun     Mon     Tue     Wed     Thu     Fri     Sat");

            // Print spaces depending on the day the month starts.
            int firstDayEachMonth = (daysMonth + firstDayYear)%7;
            for (int space = 1; space <= firstDayEachMonth; space++)
                System.out.print("   ");

            // Print the days 
            for (int daysDisplay = 1; daysDisplay <= daysMonth; daysDisplay++)
            {
                if (firstDayYear%7 == 0)
                    System.out.println();

                System.out.printf("%3d      ", daysDisplay);
                firstDayYear += 1;
            }
            System.out.println();
        }

    }
}   
로이

이 예를 시도해 볼 수 있습니까? 다음 출력을 볼 수 있습니다.

   February 2016
   Sun  Mon Tue   Wed Thu   Fri  Sat
        1    2    3    4    5    6 
   7    8    9   10   11   12   13 
  14   15   16   17   18   19   20 
  21   22   23   24   25   26   27 
  28   29
package general;

import java.util.Scanner;

public class DisplayCalendar {

    public static void main(String[] args) {
        int Y = 2016;    // year
        int startDayOfMonth = 5;
        int spaces = startDayOfMonth;

        // startDayOfMonth

        // months[i] = name of month i
        String[] months = {
                "",                               // leave empty so that we start with months[1] = "January"
                "January", "February", "March",
                "April", "May", "June",
                "July", "August", "September",
                "October", "November", "December"
            };

            // days[i] = number of days in month i
            int[] days = {
                0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
            };

            for (int M = 1; M <= 12; M++) {

            // check for leap year
            if  ((((Y % 4 == 0) && (Y % 100 != 0)) ||  (Y % 400 == 0)) && M == 2)
                days[M] = 29;

            
            // print calendar header
            // Display the month and year
            System.out.println("          "+ months[M] + " " + Y);

            // Display the lines
            System.out.println("_____________________________________");
            System.out.println("   Sun  Mon Tue   Wed Thu   Fri  Sat");

            // spaces required
               spaces = (days[M-1] + spaces)%7;
            
            // print the calendar
            for (int i = 0; i < spaces; i++)
                System.out.print("     ");
            for (int i = 1; i <= days[M]; i++) {
                System.out.printf(" %3d ", i);
                if (((i + spaces) % 7 == 0) || (i == days[M])) System.out.println();
            }
            
            System.out.println();
        }
    }
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

iOS 앱에서 사용자 캘린더를 표시하는 방법

분류에서Dev

UiBinder에서 gwtbootstrap3 캘린더를 사용하는 방법

분류에서Dev

UiBinder에서 gwtbootstrap3 캘린더를 사용하는 방법

분류에서Dev

jquery 캘린더에 표시하는 방법

분류에서Dev

Google 캘린더 API에서 이벤트를 만드는 방법

분류에서Dev

캘린더 히트 맵에 범례를 추가하는 방법

분류에서Dev

AngularUI 캘린더에 HTML 요소를 추가하는 방법

분류에서Dev

시계 위젯에서 Google 캘린더 이벤트를 표시하는 방법은 무엇입니까?

분류에서Dev

캘린더에 올바른 방법으로 날짜를 추가하는 방법

분류에서Dev

내장 된 캘린더 앱에서 내 앱의 캘린더를 숨기는 방법은 무엇입니까?

분류에서Dev

zend framework2에서 전체 캘린더에 이벤트를 표시하는 방법은 무엇입니까?

분류에서Dev

구글 캘린더 API v3 자바에서 setQ () 메소드를 사용하는 방법

분류에서Dev

호텔 관리 시스템에 대한 캘린더를 표시하는 방법은 무엇입니까?

분류에서Dev

시계 위젯에 Google 캘린더 이벤트를 표시하는 방법은 무엇입니까?

분류에서Dev

맞춤형 캘린더에서 이벤트를 렌더링하는 방법

분류에서Dev

Google 캘린더 이벤트를 Flutter로 표시하는 방법

분류에서Dev

텍스트 상자에 캘린더를 추가하는 가장 좋은 방법

분류에서Dev

Selenium Webdriver를 사용하여 캘린더에서 값을 선택하는 방법

분류에서Dev

Lightning / Thunderbird에서 누락 된 캘린더 데이터를 복원하는 방법

분류에서Dev

Lightning / Thunderbird에서 누락 된 캘린더 데이터를 복원하는 방법

분류에서Dev

localhost에서 Google 캘린더 API v3를 테스트하는 방법

분류에서Dev

iOS의 캘린더에서 오래된 이벤트를 삭제하는 방법

분류에서Dev

한 페이지에서 여러 Ajax 캘린더를 사용하는 방법

분류에서Dev

기본 캘린더에서 모든 이벤트를 삭제하는 방법

분류에서Dev

xpath를 사용하여 캘린더 값에 액세스 / 선택하는 방법

분류에서Dev

자바 캘린더 : JButton을 사용하여 캘린더를 다음 달로 이동하는 방법은 무엇입니까?

분류에서Dev

Android에서 두 날짜 사이의 캘린더 이벤트를 찾는 방법

분류에서Dev

내 Windows 스토어 앱에 간단한 캘린더를 추가하는 방법

분류에서Dev

Google 캘린더 사이드 바 가젯에서 이번 주를 확인하는 방법

Related 관련 기사

  1. 1

    iOS 앱에서 사용자 캘린더를 표시하는 방법

  2. 2

    UiBinder에서 gwtbootstrap3 캘린더를 사용하는 방법

  3. 3

    UiBinder에서 gwtbootstrap3 캘린더를 사용하는 방법

  4. 4

    jquery 캘린더에 표시하는 방법

  5. 5

    Google 캘린더 API에서 이벤트를 만드는 방법

  6. 6

    캘린더 히트 맵에 범례를 추가하는 방법

  7. 7

    AngularUI 캘린더에 HTML 요소를 추가하는 방법

  8. 8

    시계 위젯에서 Google 캘린더 이벤트를 표시하는 방법은 무엇입니까?

  9. 9

    캘린더에 올바른 방법으로 날짜를 추가하는 방법

  10. 10

    내장 된 캘린더 앱에서 내 앱의 캘린더를 숨기는 방법은 무엇입니까?

  11. 11

    zend framework2에서 전체 캘린더에 이벤트를 표시하는 방법은 무엇입니까?

  12. 12

    구글 캘린더 API v3 자바에서 setQ () 메소드를 사용하는 방법

  13. 13

    호텔 관리 시스템에 대한 캘린더를 표시하는 방법은 무엇입니까?

  14. 14

    시계 위젯에 Google 캘린더 이벤트를 표시하는 방법은 무엇입니까?

  15. 15

    맞춤형 캘린더에서 이벤트를 렌더링하는 방법

  16. 16

    Google 캘린더 이벤트를 Flutter로 표시하는 방법

  17. 17

    텍스트 상자에 캘린더를 추가하는 가장 좋은 방법

  18. 18

    Selenium Webdriver를 사용하여 캘린더에서 값을 선택하는 방법

  19. 19

    Lightning / Thunderbird에서 누락 된 캘린더 데이터를 복원하는 방법

  20. 20

    Lightning / Thunderbird에서 누락 된 캘린더 데이터를 복원하는 방법

  21. 21

    localhost에서 Google 캘린더 API v3를 테스트하는 방법

  22. 22

    iOS의 캘린더에서 오래된 이벤트를 삭제하는 방법

  23. 23

    한 페이지에서 여러 Ajax 캘린더를 사용하는 방법

  24. 24

    기본 캘린더에서 모든 이벤트를 삭제하는 방법

  25. 25

    xpath를 사용하여 캘린더 값에 액세스 / 선택하는 방법

  26. 26

    자바 캘린더 : JButton을 사용하여 캘린더를 다음 달로 이동하는 방법은 무엇입니까?

  27. 27

    Android에서 두 날짜 사이의 캘린더 이벤트를 찾는 방법

  28. 28

    내 Windows 스토어 앱에 간단한 캘린더를 추가하는 방법

  29. 29

    Google 캘린더 사이드 바 가젯에서 이번 주를 확인하는 방법

뜨겁다태그

보관