预期的Java标识符

时间:2015-10-17 20:00:01

标签: java

我正在写一个允许两个超级英雄战斗的程序。第一个类已正确编译,但主要不是。我在第9行和第18行遇到了同样的错误。我希望有人可以帮助我。

战斗类:

    public class Fight {

    public static void main (String [] args) {

        Superhero Spiderman = new Superhero();
        Superhero TheHumanTorch = new Superhero(21);
    }

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

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

    public TheHumanTorch fight(Spiderman){
    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 amount) { 
        Strength = Strength + amount; 
    } 

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

    public String toString() {  
        return "Superhero"; 
    } 
}

1 个答案:

答案 0 :(得分:0)

第9行和第18行:

public TheHumanTorch fight(Spiderman){

你没有定义蜘蛛侠。 你可以这样做:

public void fight(Superhero superHero){

您的代码的其他问题包括:

  • 两次定义相同的方法(在main中定义两次的战斗方法)
  • 因为你的战斗方法很通用,你可能想要提供一个更通用的变量名称,如“superHero”而不是“spiderman”。 (因为现在的英雄并不总是与蜘蛛侠战斗)
  • 方法fight的返回类型可能只是void
  • 如果你需要返回战斗的胜利者,那应该是Superhero而不是TheHumanTorch
  • Spiderman Strength = Strength + amount;会给您一个错误。力量为int。你可以this.strength += amount;
  • fight()课程中的SuperHero方法有偏见。它的实力与实力并列,对手总是获胜。你可以为力量创造一个条件。
  • 您正在主要重新定义fight和各种方法。

没有必要这样做。只需创建SuperHero的实例并从实例中调用方法:

//In main
SuperHero hero1= new SuperHero("Spiderman");
SuperHero hero2= new SuperHero("Batman");
hero1.fight(hero2);    //Let Spiderman fight with Batman