无法理解java中的错误

时间:2013-04-27 15:53:35

标签: java

我试图知道如果我有两个带有main函数的类会发生什么。 我使用了以下代码:

class A {
  public static void main(String[] args){
    System.out.println("Hello,World!");
  }
}
class Hello {
  public static void main(String[] args){
    System.out.println("Hello,World!");
  }
}

我使用javac First.java编译它(因为没有将类指定为public,我将该文件命名为First.java);它编译没有任何错误,我只运行类A.Expecting Hello类来运行自己。不要发生(?),也许程序超出了范围。

所以,

我尝试编译以下java代码(我是初学者),但是我收到以下错误。 代码:

class Hello {
  public static void main(String[] args) {
    System.out.println("Hello,World!");                                                 
  }
}
class A {
  public static void main(String[] args) {
    System.out.println("Hello,World!");
    Hello.main();
  }
}

我通过javac First.java编译了它并收到以下错误:

method main in class Hello cannot be applied to given types;

    Hello.main();
         ^

我希望程序首先运行A类的主函数,然后运行Hello类。 这里出了什么问题?

2 个答案:

答案 0 :(得分:5)

查看Hello.main的声明:

public static void main(String[] args)

现在你试图这样称呼它:

Hello.main();

在方法中,您期望args的价值是多少?您需要为args提供一个值...幸运的是,您已经拥有一个,因为您在使用args作为参数的方法中,也是类型String[]。因此,您应该能够将代码更改为:

Hello.main(args);

请注意,两个args参数 - 一个用于Hello.main,另一个用于A.main完全独立。我们发生使用传递一个值来为另一个提供初始值,但我们可以很容易地写出:

Hello.main(null);

Hello.main(new String[] { "Some", "other", "strings" });

代替。

答案 1 :(得分:0)

在你的第二堂课中这样做:

public static void main(String[] args) throws IOException {
    MyOtherClass.main(args);
}