2014-11-30 5 views
1

내가 사용하는 경우 : GergorianCalendar.isLeapYear()를 호출 할 때 변수를 사용할 수 있습니까?

GregorianCalendar cal = (GregorianCalendar) GregorianCalendar.getInstance(); 
boolean yearIsLeapYear = cal.isLeapYear(2016); 

그런 다음 내 varialbe의 yearIsLeapYear 제대로 true로 설정됩니다. 그러나 2016 대신 변수를 사용하면 작동하지 않습니다.

int year = 2016; 
GregorianCalendar cal = (GregorianCalendar) GregorianCalendar.getInstance(); 
boolean yearIsLeapYear = cal.isLeapYear(year); 

뭔가가 누락되었거나 변수를 isLeapyYear() 메소드에 전달할 수 없습니까? 프로그램에서 나는 연도 필드의 값을 사용자 입력에 따라 변경할 수 있고 현재 구현되는 최종 알고리즘이 현재 연도가 윤년이거나 다음 연도가 윤년 인 경우 다르게 동작해야한다고 쓰고 있습니다. 나는 이것이 수표를 수행하는 간단한 방법이라고 생각했다.

편집 보여주는 전체 코드

필드는 다음과 같습니다

private int year; 
private boolean yearIsLeapYear , nextYearIsLeapYear, previousYearIsLeapYear; 

다음과 같이 내가 생성자가 :

public FirstDayOfSummer(int currentYear) { 
    year = currentYear; 
    checkForLeapYears(); 
} 

을 내가 생성자에서 호출하고 다음과 같은 방법

private void checkForLeapYears(){ 
    GregorianCalendar cal = (GregorianCalendar) GregorianCalendar.getInstance(); 

    //checking for a leap year using the current value of "year" 
    if(cal.isLeapYear(year)){ 
     yearIsLeapYear = true; 
    } 
    else{ 
     yearIsLeapYear = false; 
    } 

    //checking for a leap year using the value of "year" + 1 
    if(cal.isLeapYear(year + 1){ 
     nextYearIsLeapYear = true; 
    } 
    else{ 
     nextYearIsLeapYear = false; 
    } 

    //checking for a leap year using the value of "year" - 1 
    if(cal.isLeapYear(year - 1){ 
     previousYearIsLeapYear = true; 
    } 
    else{ 
     previousYearIsLeapYear = false; 
    } 

} 
+0

어떤 오류가 발생합니까? – SLaks

+1

두 발췌 문장 모두에 대해 사실이됩니다 (놀라운 것은 아닙니다). 따라서 오류는 다른 곳에서 발생합니다. –

+1

이것이 실제 코드인가 아니면'year' 초기화와'isLeapYear()'호출 사이에 구분되는 코드인가, 아니면'year' 필드에 접근하는 여러 쓰레드가 있을까요? – RealSkeptic

답변

0

내 생성자를 호출하는 중 오류가 발생했습니다.

실수로 생성자에서 현재 연도를 사용하고 있었고, 뮤 테이터 메서드를 사용하여 다른 것으로 변경하려고했습니다. 윤년을 검사하는 내 메서드가 생성자에서만 호출되었고 뮤 테이타에서도 호출되지 않았기 때문에 결코 내 불리언을 업데이트하지 않았습니다!

좋은 질문에 감사드립니다.

관련 문제