```
public class tuna
{
private int hour;
private int minute;
private int second;
// Constructor with 0 passed arguments
public tuna()
{
this(0,0,0);
}
// Constructor with 1 passed arguments
public tuna(int h)
{
this(h,0,0);
}
// Constructor with 2 passed arguments
public tuna(int h, int m)
{
this(h,m,0);
}
// Constructor with 3 passed arguments
public tuna(int h, int m, int s)
{
setTime(h,m,s);
}
// setTime method
public void setTime(int h, int m, int s)
{
setHour(h);
setMinute(m);
setSecond(s);
}
/*----------Set methods----------*/
public void setHour(int h) {hour = ( (h>=0 && h<24)?h : 0);}
public void setMinute(int m) {hour = ( (m>=0 && m<60)?m : 0);}
public void setSecond(int s) {hour = ( (s>=0 && s<60)?s : 0);}
/*----------Get methods----------*/
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());
}
}
```
上面是包含构造函数和方法的类,下面是带有实际调用构造函数和方法的主要功能的类。
我制作了一个显示时间的简单程序,而练习表明您可以拥有多个带有不同数量参数的构造函数。唯一的问题是,当我到达构造函数的步骤时,所有信息都是正确的,但是当调试器从构造函数跳转到该类时,除这一行外,所有信息中使用的所有信息都消失了。我认为这与我设置构造函数的方式有关,但是我无法弄清楚自己做错了什么。任何帮助都会很棒。谢谢!
这是我得到的输出:
所需的输出:
如果你们中的任何人都认识到这一练习,那是Bucky的教程之一。附言我通常不会发布所有代码,但实际上我不知道与我的问题有关的内容是什么。
class apples
{
public static void main(String[] args)
{
tuna obj1 = new tuna(); // No parameter constructor
tuna obj2 = new tuna(5); // 1 parameter constructor
tuna obj3 = new tuna(5,13); // 2 parameter constructor
tuna obj4 = new tuna(5,13,43); // 3 parameter constructor
System.out.printf("%s\n", obj1.toMilitary());
System.out.printf("%s\n", obj2.toMilitary());
System.out.printf("%s\n", obj3.toMilitary());
System.out.printf("%s\n", obj4.toMilitary());
}
}
您正在所有设置器中都设置hour
,而您应该设置hour
,minute
和second
。
public void setHour(int h) {hour = ( (h>=0 && h<24)?h : 0);}
public void setMinute(int m) {minute = ( (m>=0 && m<60)?m : 0);}
public void setSecond(int s) {second = ( (s>=0 && s<60)?s : 0);}