2015-10-17 83 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