我仍然不完全理解我需要在项目的.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)。知道为什么会这样吗?
答案 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
是因为您在方法中使用了访问修饰符。在类
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是您的代码,可以在没有错误的情况下进行编译。