它让我发疯,当我运行这个简单的Java程序时会产生24个错误。

时间:2015-05-30 23:36:20

标签: java

public class Planet {
    double x;
    double y;
    double xV;
    double yV;
    double mass;
    double imgName;
    public Planet (double x; double y; double xV; double y; double mass; double imgName;) {
        this.x = x;
        this.y = y;
        this.xV = xV;
        this.yV = yV;
        this.mass = mass;
        this.imgName = imgName;
    }
    public static void main(String[] args) {
        return 0;
    }
}
  

Planet.java:8:')'预期

     

Planet.java:8:非法启动类型

     

Planet.java:8:&#39 ;;'预期

     

Planet.java:9:非法启动类型

     

Planet.java:9:预计

     

Planet.java:9:';'预期

     

Planet.java:9:非法启动类型

     

...

     

Planet.java:16:类,接口或枚举预期的public static void   main(String [] args)

     

Planet.java:18:期望的类,接口或枚举}

我看到了不同类型的错误!任何人都可以一个一个地向我解释,因为它太烦人了。

1 个答案:

答案 0 :(得分:7)

您没有正确声明参数。使用:

public Planet (double x, double y, double xV, double y, double mass, double imgName)

此外,main不应返回0.如果要返回系统退出代码,请使用System.exit(0)。只需从主要方法返回(使用return;或到达结尾)将类似于来自C等主要语言的return 0;

错误太多的原因是Java解析器/编译器的工作方式。第一个错误已经是一个错误的状态,因此以下错误只是编译器的混淆" confused"。

编译/语法错误的一个实际经验法则是专注于修复给定的第一个错误,因为解析文件的其余部分可能会受到影响。

虽然我不是100%肯定,但我相信以下情况发生了:

  1. 分号导致解析器发出错误的关闭)错误,并结束语句(事实上,然后结束构造函数)。
  2. 在最后一个分号后,)是非法类型,并且还需要分号。
  3. 虽然几乎任何人都会断定this.x = x是构造函数的一部分,但前一行混淆了解析器,所以它认为它在类范围内工作(不在方法中)。它无法解析this.x = x因为this.x不是有效类型,而且这个"字段"没有名字。在这一点上,很明显以前的错误已经搞砸了解析器状态,足以开始恐慌它现在认为不合适的有效语句。
  4. 当它到达结束}时,它结束了类范围。以下主要方法和最终结束}同样是不可解析的,并导致发出错误(因为此时这些元素不在类中)