我是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()),而是在方法体内定义从控制台读取的变量。

10-04 18:25