我是 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);
有用。我正在添加 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()
),而是定义从方法内的控制台读取的变量 body 。
关于JAVA。运行来自不同类的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51027217/