2012-08-04 3 views
0

변수 (gmtHourPrev)의 이전 값을 가져오고 싶습니다. 다음과 같이합니다. 테스트 목적으로 변경 한 후에 gmtHourPrev의 값은 항상 gmtHour와 같으며 이전 값을 얻을 수 없다는 것을 알았습니다. 여기서 내가 뭘 잘못하고 있니? 감사합니다변수의 이전 값을 올바르게 얻으려면 어떻게해야합니까?

private int gmtHour; 
private int gmtHourPrev; 

public int getHour() { 
    return gmtHour; 
}  
public void setGmtHour(int gHour) { 
    this.gmtHourPrev = this.gmtHour; 
    this.gmtHour = gHour; 
}  
public int getGmtHourPrev() { 
    return gmtHourPrev; 
} 

public String getGmtHourInfo() { 
    gmtHour = Calendar.HOUR; 
    setGmtHour(gmtHour); 
    if (isOK() == true) { 
     return gmtHour; 
    } 
    else { 
     return getGmtHourPrev(); 
    } 
} 
+0

'Calendar.HOUR'은 상수입니다. 원하는 것이 아닙니다.나는'getGmtHourInfo'가하려고하는 것을 이해하지 못하기 때문에 그것을 고칠 방법을 제안 할 수 없습니다. –

답변

1

봐 : Calendar.HOUR아마 당신이 효과적으로 두 번 변수를 설정하는 (즉, 상수의) 생각하는 것이 아니다는 사실을 제외하고

gmtHour = Calendar.HOUR; 
setGmtHour(gmtHour); 

. 한 번만, 예를 들어, 그것을 설정해야

gmtHour = Calendar.HOUR; 
gmtHourPrev = Calendar.HOUR; 

:에 상당하다고

gmtHour = Calendar.HOUR; 
gmtHourPrev = gmtHour; 
gmtHour = gmtHour; 

: 위의 코드는 동일합니다 거의 확실하게 그 값은 당신이 원하는 것이 아니다,하지만 다시

setGmtHour(Calendar.HOUR); 

를 호출 단지 ...

당신은 아마 원하는 :

setGmtHour(calendar.get(Calendar.HOUR)); 

Calendar의 몇 가지 예를 들어 . 그것은 잘 작동

+0

정말 고마워요. – Bryan

0

Calendar.HOUR은 단순히 Calendar 객체의 필드를 참조하는 static final int (상수)입니다. Calendar 인스턴스에서 호출 할 때 Calendar가 나타내는 시간 값을 검색 할 때이 메서드를 get() 메서드에 전달해야합니다.

제외하고,이 두 줄 그 :

gmtHour = Calendar.HOUR; 
setGmtHour(gmtHour); 

은 본질적으로 gmtHourgmtHourPrev는 항상 값과 동일 gmtHour를 설정하기 때문에, 다음 gmtHour의 값으로 gmtHourPrev을 설정 setGmtHour() 전화, 동일 것을 의미, gmtHour을 전달 된 값 (현재 값은 gmtHour)으로 설정합니다. 이것

0

아, 그리고 String을 반환 선언하는 방법에서 int을 반환하려고 노력하는 중 좋은 생각이 아니다

...; 몇 가지 테스트 코드를 추가했습니다. 자신에 대한 참조 : 그럼 당신은 gmtHour에 할당 한 값을 사용하는

public class Main { 
    private int gmtHour; 
    private int gmtHourPrev 
    public int getHour() { 
     return gmtHour; 
    }  
    public void setGmtHour(int gHour) { 
     this.gmtHourPrev = this.gmtHour; 
     this.gmtHour = gHour; 
    }  
    public int getGmtHourPrev() { 
     return gmtHourPrev; 
    } 
    public static void main(String[] args) { 
     Main main = new Main(); 
     main.setGmtHour(5); 
     System.out.println("hour set to 5"); 
     System.out.println("getGmtHourPrev(): " + main.getGmtHourPrev()); 
     System.out.println("getHour(): " + main.getHour()); 
     main.setGmtHour(6); 
     System.out.println("hour set to 6"); 
     System.out.println("getGmtHourPrev(): " + main.getGmtHourPrev()); 
     System.out.println("getHour(): " + main.getHour()); 
    } 
} 
0

그래서 당신은 항상 하나 개의 값을받을거야. 당신은 차이를 볼 것

setGmtHour(Calender.HOUR+1); 
    setGmtHour(Calendre.HOUR); 
    .... 

다음의 값을 인쇄 : 당신처럼 사용하는 경우

public String getGmtHourInfo() { 
    gmtHour = Calendar.HOUR; 
    setGmtHour(gmtHour); 
    .... 
} 

코드는 작동합니다.

관련 문제