0

我仍然不完全理解在项目的 .java 文件中需要在哪里使用“public static void main(String[] args)”标头。您是否需要将该标头放在包的每个 .java 文件中?

我一直在关注我书中的第 3 章,将下载的独立书籍源文件拖放到我的项目包中,但是我的包中的一些 .java 文件不喜欢那个“public static void main(String[] args)" 声明,即使我的开始和结束花括号在正确的位置。这是其中一个文件的示例(代码注释中描述了错误(S)):

    public class Rectangle
{
   public static void main(String[] args){
   private double length;//ERROR: illegal start of expression
   private double width;

   /**
    * Constructor
    */

   public Rectangle(double len, double w)
   {
      length = len;
      width = w;
   }

   /**
    * The setLength method accepts an argument
    * that is stored in the length field. 
    */

   public void setLength(double len)
   {
      length = len;
   }

   /**
    * The setWidth method accepts an argument
    * that is stored in the width field.
    */

   public void setWidth(double w)
   {
      width = w;
   }

   /**
    * The set method accepts two arguments
    * that are stored in the length and width
    * fields.
    */

   public void set(double len, double w)
   {
      length = len;
      width = w;
   }

   /**
    * The getLength method returns the value
    * stored in the length field.
    */

   public double getLength()
   {
      return length;
   }

   /**
    * The getWidth method returns the value
    * stored in the width field.
    */

   public double getWidth()
   {
      return width;
   }

   /**
    * The getArea method returns the value of the
    * length field times the width field.
    */

   public double getArea()
   {
      return length * width;
   }

}//end of: public static void main(String[] args)

}//end of: public class Rectangle  ERROR: class, interface, or enum expected

在我将“public static void main(String[] args)”添加到现有的 Rectangle.java 文件后,出现了 ERROR(S)。知道为什么会这样吗?

4

3 回答 3

0

main只是一个方法名。按照惯例,当您使用该java <someclass>命令时,该命令会在其中查找main具有特定签名(参数集)的方法,<someclass>并调用该方法作为 Java 应用程序的入口点。

没有规则说你不能main在每个类中都有一个方法,但只有命令行中命名的类中的一个java具有任何特殊意义,而不仅仅是另一种方法。

也就是说,为避免混淆,最好避免将main其用作方法名称,除非您打算将其用作应用程序的“主要入口点”。

您的错误仅仅是因为您的语法无效 - 添加时您没有输入完整的方法main

于 2013-06-24T02:09:04.793 回答
0
private double length;

该错误是因为您不能拥有方法局部变量的访问修饰符。访问修饰符用于类变量。访问级别修饰符确定其他类是否可以使用特定字段或调用特定方法。

在 Java 编程语言中,每个应用程序都必须包含一个 main 方法,其签名是:

public static void main(String[] args)

但这并不意味着应用程序中的每个类都应该包含一个 main 方法。main 方法类似于 C 和 C++ 中的 main 函数;它是您的应用程序的入口点,随后将调用您的程序所需的所有其他方法。

我建议您在开始编写程序并让自己完全困惑之前了解 Java 应用程序、类、访问修饰符的剖析。这里有几个链接可以帮助您:

http://docs.oracle.com/javase/tutorial/getStarted/application/#MAIN

http://docs.oracle.com/javase/tutorial/java/javaOO/index.html

http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

于 2013-06-24T00:26:25.757 回答
-2

main()发生这种情况是因为您在一个包中不能有多个方法。但是,绝对允许覆盖 main 方法。我的意思是,只要参数号不同,您就可以覆盖main()方法。

public static void main(String[] args) {
   .....
}

在其他或同一类的其他地方,您可以添加此类

public static void main(String arg1, String arg2) {
    .....
}

ERROR: illegal start of expression是因为您在方法中使用了访问修饰符。使用类中的所有访问修饰符和变量声明

public class Rectangle {

    private double length;//ERROR: illegal start of expression   
    private double width;

    public static void main(String[] args) {
    ....
    }
}

ERROR: class, interface, or enum expected是因为该类Rectangle仅包含一个静态方法,您的所有方法和参数都在调用的静态方法中main()

是您的代码,它将无错误地编译。

于 2013-06-24T00:24:29.370 回答