2015-10-17 85 views
-2

我正在编写一个允许两个Superheros进行斗争的程序。第一类编译正确,但主要不是。第9行和第18行出现同样的错误。我希望有人能帮助我。Java标识符预计

扑灭类:

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"; 
    } 
} 
+0

公共类超级英雄{ \t \t公共字符串名称; \t private int Strength; public superhero(String n,int s){ \t \t Name = n; \t Strength = s; \t } \t 公共超级英雄(字符串N){ \t \t 名称= N; \t强度= 10; } \t 私人无效的上电(INT量){ \t \t 强度=强度+量; \t } 公共超级英雄战斗(超级英雄opponet){ \t 如果(this.Strength> opponet.Strength){ \t \t 返回此; } else { \t return opponet; \t} } \t公共字符串的toString(){\t \t \t \t \t返回 “超级英雄”; \t \t \t \t \t \t} } – Labz

+1

你缺乏基本的Java知识。我建议你在开始提问之前阅读Java教程。 –

回答

0

在9号线和18:

public TheHumanTorch fight(Spiderman){ 

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

public void fight(Superhero superHero){ 

与你的代码的其他问题包括:

  • 定义相同的方法两次,因为你的战斗(在main定义了两次战斗方法)
  • 方法是一般的,你可能想给一个更通用的变量名称,比如“superHero”而不是“蜘蛛侠”。 (由于目前英雄不会总是打的是一场蜘蛛侠)
  • 的方法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 
+0

另请注意,飞行方法定义了两次,没有返回值。 – YoungHobbit

+0

@YoungHobbit是的,他的代码有很多问题。他给了'fight()'返回类型,但是他的返回类型是错误的。 – user3437460