JAVA。运行来自不同类的函数

时间:2018-06-25 15:38:15

标签: java

我是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);   
}

1 个答案:

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