编译时非法启动类型错误

时间:2015-10-17 15:42:52

标签: java

我正在写一个允许两个超级英雄战斗的程序。但是,当我尝试编译时,我得到一个非法的启动类型错误。

public class Fight {

    public static void main(String [] args); {
        Superhero Spiderman = new Superhero();
        Superhero TheHumanTorch = new Superhero(21);
    }

    public Spiderman fight(TheHumanTorch opponet); {
        System.out.Println(TheHumanTorch);
    }

    private void powerUp(100); {
        Spiderman Strength = Srength + 100;
    }

    public Spiderman fight(TheHumanTorch opponet); {
        System.out.Println(Spiderman);
    }
}
public class Superhero {

    public String Name;
    private int Strength;

    public Superhero(String n, int s) {

        Name = n;
        Strength = s;

    }

    public Superhero(String n) {

        Name = n;
        Strength = 10;
    }

    private void powerUp(int powerUp) {
        Srength = Srength + powerUp;
    }

}

    public Superhero fight(Superhero opponet) {
        if (this.Strength > opponet.Strength) {
            return this;
        } else {
            return opponet;
        }
    }

    public String toString() {
        if (this.Stength) {
            return "Superhero";
        } else {
            return "Superhero opponet";
        }
    }
}

1 个答案:

答案 0 :(得分:1)

这是由此代码引起的:

private void powerUp(100); {
    Spiderman Strength = Srength + 100;
}

您需要为方法提供类型和参数名称。我猜你的意思是提供amount之类的东西。如果名为Spiderman的类可用并且Srength可用于此方法的范围,则可以进行编译:

private void powerUp(int amount) {
    Spiderman Strength = Srength + amount;
}

另一个问题是你的类定义中有太多括号:

    private void powerUp(int powerUp) {
        Srength = Srength + powerUp;
    }

}
// This is the closing bracket for the class definition.

你应该删除那个额外的支架。您的代码未包含在类定义中。

还有很多其他问题。当您尝试编译时,编译器将帮助您发现这些问题并为您提供有关如何解决它们的上下文。

您似乎对编程很新,所以您可能只是使用记事本或VI等编辑器。许多开发人员(大多数)使用名为IDE的工具,这使得开发人员的生活更多更好。一些例子是:

正如Andreas所述,您的main和其他方法在不应该使用分号时使用分号:

public static void main(String [] args); {

应该是:

public static void main(String [] args) {

还有很多的其他问题,您的编译器(或IDE)将会捕获您需要解决的问题。以下是编译器将找到的一些示例,您必须弄清楚如何修复:

  • Spiderman不是定义的类
  • TheHumanTorch不是定义的类
  • Println不是java.io.PrintStream定义的方法(您System.out.Println来电)
  • SrengthStength将无法解决。你可能意味着Strength

我建议您使用附近的Java资源慢慢迭代代码,以帮助指导您完成一些示例,并比较您编写的内容与编写示例的方式。