我不确定为什么我被告知构造函数Time_Class_sub(int, int, int)是未定义的。括号中已经说明了int4、5、6。
这是主类:
public class Time_Class_main {
public static void main(String [] args){
Time_Class_sub linktosub = new Time_Class_sub(4, 5, 6);
//linktosub.settime(3, 4, 65);
System.out.println(linktosub.tomilitary());
}
}这是subsidiary类:
public class Time_Class_sub {
private int hour;
private int minute;
private int second;
public void Time_Class_sub(int h, int m, int s){
//if the condition is met, assign hour = h. If not, h = 0
hour = ((h >= 0 && h < 24) ? h : 0);
minute = ((m >= 0 && m < 60) ? m : 0);
second = ((s >= 0 && s < 60) ? s : 0);
}
public String tomilitary () {
return String.format("%02d:%02d:%02d", hour, minute, second);
}
}发布于 2016-04-23 19:41:28
类的构造函数没有返回类型-甚至没有void。在本例中,您意外地指定了一个与类同名的普通实例方法(请记住,字段、类型名和方法名实际上有三个不同的名称空间)。
只需移除void,即可完成设置。
另外,请遵循Java naming conventions -您的类名应该是TimeClassSub。
编辑:如果这是生产代码,而不仅仅是一个任务,请为了所有神圣的东西而阅读this。
发布于 2016-04-23 19:23:57
试一试
public class Time_Class_sub
{
private int hour {get; set;}
private int minute {get; set;}
private int second {get; set;}
public Time_Class_sub(int h, int m, int s)
{
//if the condition is met, assign hour = h. If not, h = 0
hour = ((h >= 0 && h < 24) ? h : 0);
minute = ((m >= 0 && m < 60) ? m : 0);
second = ((s >= 0 && s < 60) ? s : 0);
}
public string tomilitary () {
return String.format("%02d:%02d:%02d", hour, minute, second);
}
}此外,您还可以考虑实现一个名为
public override string ToString()
{
return String.format("%02d:%02d:%02d", hour, minute, second);
}如果您正在使用c#编程(请将您的编程语言作为标签添加)
https://stackoverflow.com/questions/36810089
复制相似问题