我想获得变量的先前值(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 :(得分:1)
看看这个:
gmtHour = Calendar.HOUR;
setGmtHour(gmtHour);
除了Calendar.HOUR
可能不是你认为的那个(这是一个常数)之外,你有效地设置变量两次。上面的代码相当于:
gmtHour = Calendar.HOUR;
gmtHourPrev = gmtHour;
gmtHour = gmtHour;
这相当于:
gmtHour = Calendar.HOUR;
gmtHourPrev = Calendar.HOUR;
您只需设置一次,例如只是致电
setGmtHour(Calendar.HOUR);
但是,这个价值几乎肯定不是你想要的......
你可能想要:
setGmtHour(calendar.get(Calendar.HOUR));
对于Calendar
的某些实例。
哦,尝试从声明为返回int
的方法返回String
也不是一个好主意......
答案 1 :(得分:0)
Calendar.HOUR
是一个静态final int(常量),它简单地引用Calendar对象中的一个字段。在Calendar实例上调用它时,它的用法是传递给get()
方法,以检索Calendar表示的小时值。
除此之外,这两行:
gmtHour = Calendar.HOUR;
setGmtHour(gmtHour);
基本上意味着gmtHour
和gmtHourPrev
始终相等,因为您将gmtHour
设置为等于该值,然后调用setGmtHour()
将gmtHourPrev
设置为gmtHour
的值,然后将gmtHour
设置为传递的值(gmtHour
的当前值)。
答案 2 :(得分:0)
工作正常;我添加了一些测试代码;亲眼看看:
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());
}
}
答案 3 :(得分:0)
您正在使用一个值分配给gmtHour
,因此您总是会得到一个值。
public String getGmtHourInfo() {
gmtHour = Calendar.HOUR;
setGmtHour(gmtHour);
....
}
如果您使用它,您的代码将起作用:
setGmtHour(Calender.HOUR+1);
setGmtHour(Calendre.HOUR);
....
然后打印您会看到差异的值。