当我运行这个程序时,它会返回:
00:00:00 00:00:00 00:00:00 00:00:00
我做错了什么,我如何才能让它返回我打算返回的数字?
这是我主课的代码。
public static void main(String[] args) {
tuna tunaObject1 = new tuna();
tuna tunaObject2 = new tuna(5);
tuna tunaObject3 = new tuna(5, 13);
tuna tunaObject4 = new tuna(5, 13, 43);
System.out.println(tunaObject1.toMilitary());
System.out.println(tunaObject2.toMilitary());
System.out.println(tunaObject3.toMilitary());
System.out.println(tunaObject4.toMilitary());
}
} 这是我在课堂外的主要代码之一。
public class tuna {
private int hour;
private int minute;
private int second;
public tuna() {
this(0, 0, 0);
}
public tuna(int h) {
this(h, 0, 0);
}
public tuna(int h, int m) {
this(h, m, 0);
}
public tuna(int h, int m, int s) {
setTime(h, m, s);
}
public void setTime(int h, int m, int s) {
setHour(h);
setMinute(m);
setSecond(s);
}
public void setHour(int h) {
hour = ((hour >= 0 && hour < 24) ? hour:0);
}
public void setMinute(int m) {
minute = ((minute >= 0 && minute < 60) ? minute:0);
}
public void setSecond(int s) {
second = ((second >= 0 && second < 60) ? second:0);
}
public int getHour() {
return hour;
}
public int getMinute() {
return minute;
}
public int getSecond() {
return second;
}
public String toMilitary() {
return String.format("%02d:%02d:%02d", getHour(), getMinute(), getSecond());
}
}发布于 2015-05-26 07:05:07
public void setHour(int h) {
hour = ((hour >= 0 && hour < 24) ? hour:0);
}应该是
public void setHour(int h) {
hour = ((h >= 0 && h < 24) ? h:0);
}其他策划人也是如此
发布于 2015-05-26 07:05:31
例如,查看您的setHour方法:
hour = ((hour >= 0 && hour < 24) ? hour:0);注意,类成员有默认值,因为hour是一个int,所以它获得0作为默认值(JLS 4.12.5.变量初值)。因此,您的方法相当于:
hour = ((0 >= 0 && 0 < 24) ? 0 : 0);其他方法也是如此。
补充说明:
Tuna在我描述了这个问题之后,很容易解决它。使用h而不是hour,我相信您可以自己处理。
发布于 2015-05-26 07:06:42
改变这个
public void setHour(int h) {
hour = ((hour >= 0 && hour < 24) ? hour:0);
}应该是
public void setHour(int h) {
hour = ((h >= 0 && h < 24) ? h:0);
}同样,对于其他人,你也必须改变。问题是你错误地分配了变量。请看@Maroun Maroun的答案。他已经很清楚地告诉你为什么不起作用了。编写代码时请遵循Java约定。
https://stackoverflow.com/questions/30451643
复制相似问题