2016-04-27 150 views
0

比方說,我有一個名爲items與此代碼類:如何顯示數組中特定項目的數量?

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; 
    } 

} 

我希望能夠顯示在列表中的特定項目的數量。例如,對於我的基於文本的RPG遊戲,玩家在他的庫存中添加了25個金幣。我不希望它在他的庫存中顯示25次「黃金」一詞,而是'黃金(25)'。我會怎麼做呢?

+0

問題是? – shmosel

+1

我看到兩種方法可以做到這一點。一種方法是包括一個方法,該方法計算每個列表中給定項目出現的次數,然後將每個項目名稱與其數量一起顯示。另一種方法是修改您的Item類以包含數量以及名稱和類型。 –

回答

0

我搞糊塗了您的問題......但在這裏不用什麼...

size()方法應該給你你在找什麼。它是ArrayList實現的Collection接口的一部分。

從JavaDoc的:

INT尺寸()

返回此列表中的元素的數量。如果此列表包含多個Integer.MAX_VALUE元素,則返回Integer.MAX_VALUE。

話雖這麼說,下面的代碼演示瞭如何在實踐中運用這種方法:

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

然而,看來您已經在上面的代碼示例中使用這種方法...所以我不確定這是否真的是你需要的。

0

如果你想要一個數組列表中的物品數量,例如你擁有的武器數量,你可以簡單地使用itemlistweapons.size(),如果你想計算一些特定的武器,比如你有多少劍,你可以增加一個變量,如果當前武器是一把劍,同時通過itemlistweapons循環。對於像黃金這樣的東西,你不想使用數組列表,因爲一個變量就足夠了,每當你獲得一些黃金時你可以增加。

相關問題