假设我有一个班级。它被称为Item。
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;
等等。我将如何编写一个方法来找出数组中的哪个元素(或一般的任何东西)是I.e.
elementOne.findPlace
将返回int值0。
谢谢!
答案 0 :(得分:3)
在这种情况下,由于数组的范围以及类不了解其周围环境这一事实,您可能无法这样做。
使用对象列表,并使用:
myList.indexOf(item)
获取int索引。
Item类还应包含equals(
方法。
答案 1 :(得分:0)
你可以用数组做到这一点,但它可能是errorprone,因此需要很多防御性编码。在课程项目中: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];
}
答案 2 :(得分:0)
我如何编写方法来找出数组中的哪个元素(或任何一般)
根据问题的引用部分,请考虑以下答案:
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 >
注意:此代码适用于作为数组的库存,List
或一般Collection
。