2016-04-27 3 views
0

Lassen Sie uns sagen, ich habe eine Klasse namens items mit diesem Code:Wie kann die Anzahl bestimmter Elemente in einem Array angezeigt werden?

import java.util.ArrayList; 

public class items { 
    private ArrayList<Item> itemlistweapons = new ArrayList<Item>(); 
    private ArrayList<Item> itemlistapparel = new ArrayList<Item>(); 
    private ArrayList<Item> itemlistaid = new ArrayList<Item>(); 
    private ArrayList<Item> itemlistmisc = new ArrayList<Item>(); 

    public void additem(String name, String type){ 
     if("Weapon".equals(type)){ 
      itemlistweapons.add(new Item(name, type)); 
     } 
     else if ("Apparel".equals(type)){ 
      itemlistapparel.add(new Item(name, type)); 
     } 
     else if ("Aid".equals(type)){ 
      itemlistaid.add(new Item(name, type)); 
     } 
     else if ("Misc.".equals(type)){ 
      itemlistmisc.add(new Item(name, type)); 
     } 
    } 

    public void dropitem(String name){ 
     for(int i = 0; i < itemlistweapons.size(); i++){ 
      if(itemlistweapons.get(i).getname().equals(name)){ 
       itemlistweapons.remove(i); 
      } 
     } 
     for(int i = 0; i < itemlistapparel.size(); i++){ 
      if(itemlistapparel.get(i).getname().equals(name)){ 
       itemlistapparel.remove(i); 
      } 
     } 
     for(int i = 0; i < itemlistaid.size(); i++){ 
      if(itemlistaid.get(i).getname().equals(name)){ 
       itemlistaid.remove(i); 
      } 
     } 
     for(int i = 0; i < itemlistmisc.size(); i++){ 
      if(itemlistmisc.get(i).getname().equals(name)){ 
       itemlistmisc.remove(i); 
      } 
     } 
     } 


    @Override 
    public String toString(){ 
     String items = ""; 
     if (itemlistweapons.size() > 0){ 
      items += "Weapons\n"; 
     for (Item itemlist1 : itemlistweapons) { 
      items += itemlist1 + "\n"; 
     } 
     } 

     if (itemlistapparel.size() > 0){ 
      items += "Apparel\n"; 
     for (Item itemlist2 : itemlistapparel) { 
      items += itemlist2 + "\n"; 
     } 
     } 
     if (itemlistaid.size() > 0){ 
      items += "Aid\n"; 
     for (Item itemlist3 : itemlistaid) { 
      items += itemlist3 + "\n"; 
     } 
     } 
     if (itemlistmisc.size() > 0){ 
      items += "Misc.\n"; 
     for (Item itemlist4 : itemlistmisc) { 
      items += itemlist4 + "\n"; 
     } 
     } 
     return items; 
    } 

} 

Ich möchte in dieser Liste die Anzahl der spezifischen Elemente in der Lage sein anzuzeigen.

Sagen wir zum Beispiel, für mein textbasiertes RPG-Spiel fügt der Spieler 25 Goldstücke zu seinem Inventar hinzu. Ich möchte nicht, dass das Wort "Gold" in seinem Inventar 25 Mal angezeigt wird, sondern stattdessen "Gold (25)". Wie würde ich das machen?

+0

Und das Problem ist? – shmosel

+1

Ich sehe zwei Möglichkeiten, wie Sie das tun können. Ein Weg wäre, eine Methode einzuschließen, die zählt, wie oft ein bestimmter Artikel in jeder Liste vorkommt, und dann jeden Artikelnamen einmal neben seiner Menge anzuzeigen. Ein anderer Weg wäre, Ihre Item-Klasse so zu modifizieren, dass sie sowohl Menge als auch Name und Typ enthält. –

Antwort

0

Ich bin ziemlich verwirrt durch Ihre Frage ... Aber hier geht nichts ...

Die size() Methode sollten Sie geben, was Sie suchen. Es ist ein Teil der Collection-Schnittstelle, die ArrayList implementiert.

Vom JavaDoc:

int size()

Gibt die Anzahl der Elemente in dieser Liste. Wenn diese Liste mehr als Integer.MAX_VALUE Elemente enthält, wird Integer.MAX_VALUE zurückgegeben.

Davon abgesehen, zeigt der folgende Code, wie Sie diese Methode in der Praxis verwendet werden könnten:

List<GoldCoin> gold = new ArrayList<GoldCoin>(); 
// Code ... 
System.out.println("Gold (" + gold.size() + ")"); 

Es scheint jedoch, dass Sie diese Methode bereits in der obigen Beispielcode verwendet haben ... Ich bin mir also nicht sicher, ob das wirklich das ist, was Sie brauchen.

0

Wenn Sie die Anzahl der Objekte in einer Arraylist haben wollen, können Sie einfach itemlistweapons.size() verwenden, wenn Sie bestimmte Waffen zählen möchten, zB wie viele Schwerter Sie haben, können Sie eine Variable erhöhen, wenn die aktuelle ist Waffe ist ein Schwert, während Itemlistweapons durchlaufen. Für etwas wie Gold wollen Sie keine Arraylist verwenden, da eine Variable genug ist, was Sie erhöhen können, wenn Sie etwas Gold bekommen.

Verwandte Themen