将独立的java文件转换为项目包的一部分文件?

时间:2013-06-24 00:22:34

标签: java

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

我一直在跟随我的书中的第3章,将下载的独立书籍源文件拖放到我的项目包中,但我的包中的一些.java文件不喜欢“public static void main”( String [] args)“语句,即使我的开始和结束花括号位于正确的位置。以下是其中一个文件的示例(代码注释中描述了ERROR(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)。知道为什么会这样吗?

3 个答案:

答案 0 :(得分:0)

private double length;

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

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

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

答案 1 :(得分:0)

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

没有规则说你不能在每个类中都有main方法,但只有在java命令行中命名的类中的那个方法才有另外一个特殊意义方法

尽管如此,为避免混淆,最好避免使用main作为方法名称,除非您打算将其作为应用程序的“主要入口点”。

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

答案 2 :(得分:-2)

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

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

在其他或同一类别的其他地方,你可以添加这样的类

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

ERROR: illegal start of expression 是因为您在方法中使用了访问修饰符。在类

中使用所有访问mofifier和变量声明
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() <的静态方法内/ p>

Here是您的代码,可以在没有错误的情况下进行编译。