0

クラスがあるとします。アイテムといいます。

public class Item {

public boolean usable = false;
protected boolean usage;    
public int id;
public String name;
public String type;
public int stacknum;
protected int tier;
public String rarity;
boolean equipable;
boolean equiped;
String altName;


public Item(int idIn, String nameIn, String typeIn) {

    usage = false;
    id = idIn;
    name = nameIn;
    type = typeIn;
    stacknum = 0;
    tier = 0;
    rarity = "Common";

}//end of constructor
}//end of class

次の配列があるとします。

Inventory = new Item[5];

次の要素が含まれています。

Item elementOne = new Item(1, "Element One", "Array Element");
Item elementTwo = new Item(2, "Element Two", "Array Element");

Inventory[0] = elementOne;
Inventory[1] = elementTwo;
Inventory[2] = elementThree;

など。Item(または一般的なもの)のどの要素がIeであるかを見つけるメソッドを作成するにはどうすればよいですか

elementOne.findPlace

0 の int 値を返します。

ありがとう!

4

3 に答える 3

0

Item(または一般的なもの)が配列内のどの要素であるかを調べるメソッドを作成するにはどうすればよいですか

この質問の引用部分に基づいて、次の回答を検討してください。

Item result= null ;
for(Item e: Inventory) {
    if( <whatever-your-search-condition-is> ) {
        result= e ;
        break;
    }
}
if( result != null )
    <found>
else
    <not found>

より一般的な解決策:

List<Item> result= new LinkedList<Item>() ;
for(Item e: Inventory) {
    if( <whatever-your-search-condition-is> )
        result.add( e );
}
if( result.size() > 0 )
    < result.size() found >
else
    < none found >

注: このコードは、Inventory が配列、 a List、または一般に aの両方で機能しCollectionます。

于 2013-08-22T06:45:09.680 に答える
0

配列でこれを行うことができますが、エラーが発生しやすいため、多くの防御的なコーディングが必要になります。クラス内アイテム:public int getID(){return this.id;}

int index = Inventory[element.getID()-1];

要素がインベントリにない場合、エラーがスローされます。リストを使用することをお勧めしますが、配列を主張する場合。

public static int getIndexOfItem(Item item, Item[] inventory){
  if(inventory == null || item == null)
    return -1;
  if (item.getID()-1 > inventory.length)
    return -1;
  return inventory[item.getID()-1];
}
于 2013-08-22T06:37:22.103 に答える