我是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);
}
最佳答案
您已在方法定义中为类型为setTime()
的int
方法指定了三个参数,因此在调用方法时需要指定类型为int
的三个参数。
因此,以您的非工作示例为例:obj.setTime();
-无法编译,因为您未提供任何参数。obj.setTime(h,m,s);
-无法编译,因为您要为其提供三个不存在的变量。obj.setTime(int h, int m, int s)
-无法编译,因为您将函数的定义与调用混淆了。
您唯一的工作示例(obj.setTime(1,2,3);
)传递三个整数-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);
}
...它不带任何参数(因此您只能调用
setTime()
),而是在方法体内定义从控制台读取的变量。