我是Java新手,需要一点帮助。
为什么当我从另一个类运行函数时它不起作用(obj.setTime()):
public class Main {
public static void main(String[] args) {
apple obj= new apple();
System.out.println(obj.TheTime());
obj.setTime();
System.out.println(obj.TheTime());
}}
如果我放obj.setTime(h,m,s);
或obj.setTime(int h, int m, int s);
,它也不起作用
但是如果我放obj.setTime(1,2,3);
可以。我是addint setTime()函数。
public void setTime(int h, int m, int s) {
Scanner reader= new Scanner(System.in);
h=reader.nextInt();
m=reader.nextInt();
s=reader.nextInt();
hour= ((h>=0 && h<24) ? h: 0);
minute= ((m>=0 && m<60) ? m: 0);
second= ((s>=0 && s<60) ? s : 0);
}
答案 0 :(得分:2)
您已在方法定义中为类型setTime()
的{{1}}方法指定了三个参数,因此调用方法时需要指定类型int
的三个参数。 / p>
举个不起作用的例子:
int
-无法编译,因为您未提供任何参数。
obj.setTime();
-无法编译,因为您要为其提供三个不存在的变量。
obj.setTime(h,m,s);
-无法编译,因为您将函数的定义与调用混淆了。
您唯一的工作示例(obj.setTime(int h, int m, int s)
)传递三个整数-1、2和3-因此可以编译。
请注意,尽管您的obj.setTime(1,2,3);
方法实际上并没有使用任何传入的参数值-它会立即用从控制台读取的值覆盖它们。所以可能是您想要这样的东西:
setTime()
...它不使用任何任何参数(因此您可以仅调用public void setTime() {
Scanner reader= new Scanner(System.in);
int h=reader.nextInt();
int m=reader.nextInt();
int s=reader.nextInt();
hour= ((h>=0 && h<24) ? h: 0);
minute= ((m>=0 && m<60) ? m: 0);
second= ((s>=0 && s<60) ? s : 0);
}
),而是在方法体内定义从控制台读取的变量。