2016-11-14 87 views
-2

我在BlueJ,SuperHero和SuperWeapon中有兩個類。我需要創建一種在Arraylist中添加超級武器的方法。該方法應該使用SuperWeapon類型的參數來調用。如何檢查數組列表中是否已經存在字符串值?

這意味着該方法假定超武器對象存在。該方法因此不應該實例化新的超級武器對象。

並且只有具有唯一名稱的武器可以被添加到列表中,因此需要對新的SuperWeaponobject進行控制。

下面的代碼是我目前所擁有的,據我所知,現在的代碼並不檢查超級武器的名稱是否是唯一的。對不起,如果代碼有點奇怪,我從瑞典語翻譯它爲英語,但我希望有人瞭解我需要什麼。

代碼:

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

您沒有字符串列表作爲您的標題暗示。你必須在你的''SuperWeapon''類中實現''equals''來使''contains''工作。 – f1sh

回答

0

有兩個選項來解決問題或者更改爲HashMap<String, ArrayList<SuperWeapons>>其超級英雄的名字映射到他的武器或其他覆蓋在超級英雄的類equals方法使得兩個超級英雄的相等如果他們的名字是相同的而不是相同的對象,即內存位置

相關問題