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

标签 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);有用。我正在添加 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/

相关文章:

java - JDBC - 如何仅检索没有时间的日期(ORACLE 12c)

Java (Android) WebSocket 客户端库

java - 如何使用 VM 选项运行测试单元

java - 在android中编码HexString

java - 如何使用 Java 线程运行 javafx 组件?

java - 如何创建 Java 包以及如何将它们导入到另一个包中?

java - 在MySQL中根据条件检索数据

java - JSON:Python 输出文件到 Java ObjectMapper - 大小错误

Java jar 文件未运行

java - 无法安装 Jenkins 的 SSH 代理插件