2016-11-14 10 views
-2

私はBlueJ、SuperHero、SuperWeaponの2つのクラスを持っています。私はArraylistに超武器を加える方法を作る必要があります。このメソッドは、SuperWeapon型のパラメータで呼び出されるはずです。文字列値が既に配列リストに存在するかどうかをチェックする方法は?

これは、このメソッドでは、SuperWeaponオブジェクトが存在することを前提としています。このため、新しいSuperWeaponobjectをインスタンス化することは想定されていません。

ユニークな名前の武器のみをリストに追加することができます。そのため、新しいSuperWeaponオブジェクトの制御が必要です。

以下のコードは、私が理解しているところから、スーパーワイン名が作られたときにスーパーワイン名が一意であるかどうかをチェックしていません。申し訳ありませんがコードが少し奇妙な場合、私はスウェーデン語から英語に翻訳しましたが、誰かが私が必要としていることを理解してくれることを願っています。

コード:

import java.util.ArrayList; 

public class SuperHero 
{ 
    private ArrayList<SuperWeapon> superWeaponList; 
    private String superHeroName; 
    public SuperHero() 
    { 
     superHeroName = "Superman"; 
     superWeaponList = new ArrayList<SuperWeapon>(); 
    } 
    public void addSuperWeapon(SuperWeapon superWeapon) 
    { 
     if(superWeaponList.contains(superWeapon)) 
     { 
      System.out.println("The Superhero already has a superweapon with the name: " + superWeapon.getName() + "."); 
     } 
     else 
     { 
      superWeaponList.add(superWeapon); 
      System.out.println("A new superweapon has been registred for the superhero"); 
     } 
    } 
} 
+2

あなたのタイトルが示唆するように、あなたはストリングのリストを持っていません。 '' contains''を動作させるために '' SuperWeapon''クラスに '' equals''を実装する必要があります。 – f1sh

答えて

0

彼の武器にスーパーヒーローの名前をマップするか、他2人のスーパーヒーローのが等しくなるようにスーパーヒーローのクラスのequalsメソッドをオーバーライドしHashMap<String, ArrayList<SuperWeapons>>にあなたの問題のいずれかの変更を解決するには、2つのオプションがあります。それらの名前が同じオブジェクトではなく同じ名前の場合、すなわちメモリの場所

関連する問題