2016-11-14 4 views
-2

Ich habe zwei Klassen in BlueJ, SuperHero und SuperWeapon. Ich muss eine Methode erstellen, die Superwaffen in der Arraylist hinzufügt. Die Methode soll mit einem Parameter vom Typ SuperWeapon aufgerufen werden.Wie überprüft man, ob in einer Array-Liste bereits ein String-Wert existiert?

Das bedeutet, dass die Methode voraussetzt, dass ein SuperWeapon Objekt existiert. Die Methode soll daher kein neues SuperWeapon-Objekt instanziieren.

Und nur Waffen mit eindeutigen Namen dürfen zur Liste hinzugefügt werden, daher wird eine Kontrolle des neuen SuperWeapon-Objekts benötigt.

Der Code unten ist, was ich derzeit habe, von dem, was ich verstehe, überprüft der Code gerade jetzt nicht, ob ein Superwaffennamen einzigartig ist, wenn er gemacht wird. Tut mir leid, wenn der Code ein bisschen komisch ist, ich übersetzte es ins Schwedische, aber ich hoffe, dass jemand versteht, was ich brauche.

Code:

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

Sie haben keine Liste von Strings, wie Ihr Titel vermuten lässt. Sie müssen '' equals'' in Ihrer '' SuperWeapon'' Klasse implementieren, um '' contains' 'zu arbeiten. – f1sh

Antwort

0

Es gibt zwei Möglichkeiten, Ihr Problem entweder Wechsel zu einem HashMap<String, ArrayList<SuperWeapons>>, die den Namen gleich seine Waffen oder sonst überschreiben die Methode equals in der Superhelden-Klasse, so dass zwei Superhelden sind Superhelden-Karten zu lösen wenn ihre Namen dieselben sind und nicht das gleiche Objekt, dh Speicherplatz

Verwandte Themen