当我运行这个程序时,它返回:
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());
}
}
最佳答案
查看您的 setHour
方法的示例:
hour = ((hour >= 0 && hour < 24) ? hour:0);
请注意,类成员具有默认值,因为 hour
是一个 int
,因此它的默认值是 0 ( JLS 4.12.5. Initial Values of Variables )。所以你的方法相当于:
hour = ((0 >= 0 && 0 < 24) ? 0 : 0);
其他方法也是如此。
附加说明:
- 调试您的代码 - 调试器将帮助您快速发现错误的原因
- 关注Java Naming Conventions并将您的类重命名为
Tuna
在我描述了问题之后,解决它就很容易了。使用 h
而不是 hour
,我相信您可以自己处理这个问题。
关于java - Java 中的 Setter 和 Getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30451643/