2015-02-03 9 views
0

윤년을 계산하는 프로그램을 작성했습니다. 두 번째 부분은 윤년이 아닐 경우 다음 윤년을 인쇄해야하는 부분입니다. 2097 년 출력은 다음 도약 때까지 3 년이지만 7 년이라고 가정합니다. 나는 마지막 줄에있는 코드를 실수로 생각했다. 제발 도와주세요. 이것은 지금까지 제 코드입니다.자바 프로그램 : 윤년 계산기

public static void main(String[] args) { 
    // TODO code application logic here 
    int year = 2093; 


    if((year%4==0) && year%100!=0){   
      System.out.println(year + " is a leap year."); 
     } 
    else if ((year%4==0) && (year%100==0)&&   (year%400==0)) { 
     System.out.println(year + " is a leap year."); 
    } 
    else { 
     System.out.println(year + " is not a leap year"); 
     System.out.println(4-(year%4) + " years untill next leap year"); 
    } 
+0

당신이 설명 할 수있는 경우 * 2,097 후 다음 윤년 7 년 *을 왜 , 코드 작성 방법을 알아내는 좋은 방법이 될 것입니다. –

+0

도약 년은 매 4 년마다 일어나기 때문에, 다음 년 동안 3 년 이상은 불가능합니다. – jnd

+0

'4 - (2097 % 4)'는 나에게'3 '입니다. –

답변

1

윤년 결정이 정확합니다.

    :

    4-(year%4) 
    

    당신은에 따라 다음 윤년 찾을 수 있습니다 그러나이 표현과 규칙 잘못된에 따라 다음 윤년 "윤년이 매 4 년마다있다"계산된다

  1. year 다음 연도부터 시작하십시오. 윤년인지를 결정하기 위해 이미 작성한 논리를 사용하십시오.
  2. 그렇지 않은 경우 윤년을 찾을 때까지 "내년"값을 늘리십시오.

if 로직을 별도의 방법으로 배치하면 코드와 로직이 반복되지 않도록 할 수 있습니다.

+0

코드를 작성하고 저에게 줄 수 있습니까? – dron

1

홈페이지 코드 :

int year = 2093; 
if (isLeapYear(year) { 
    System.out.println(year + " is a leap year"); 
} else { 
    int moreYears = nextLeapYear(year) - year; 
    System.out.println(moreYears + " more years until next leap year"); 
} 

Check if a year is a leap year:

public boolean isLeapYear(int year) 
{ 
    if (year % 4 != 0) 
     return false; 
    else if (year % 100 != 0) 
     return true; 
    else if (year % 400 != 0) 
     return false; 
    else 
     return true; 
} 

이 오기 다음 윤년 :

public int nextLeapYear(int year) 
{ 
    while(!isLearpYear(year)) 
     year++; 

    return year; 
} 
+0

"case"변형은보기 흉하고 원래'isLeapYear()'메소드보다 비효율적입니다. 나는이 편집을 되 돌리는 것이 좋습니다. – eckes

+0

@ 업데이트되었습니다. 감사! –