我试图找到我的数组中每个对象的索引。
public class MonsterTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Monster [] ma = new Monster[3];
ma[0] = new Vampire();
ma[1] = new Dragon();
ma[2] = new Monster();
for(int x = 0; x < 3; x++) {
System.out.println(ma[x].getClass());
System.out.println(java.util.Arrays.asList(ma[x]).indexOf(x));
ma[x].frighten(x);
}
}
}
我在这里使用java.util.Arrays.asList(ARRAY).indexOf(element)
方法是否正确? (好吧,我显然不是因为输出不正确。
答案 0 :(得分:1)
你已经拥有它 - 它是x
。你不需要使用这样的特定功能来获得你已经拥有的东西。
public class MonsterTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Monster [] ma = new Monster[3];
ma[0] = new Vampire();
ma[1] = new Dragon();
ma[2] = new Monster();
for(int x = 0; x < 3; x++) {
System.out.println(ma[x].getClass());
System.out.println(x);
ma[x].frighten(x);
}
}
}
答案 1 :(得分:0)
让我们来看看代码的作用:
java.util.Arrays.asList(ma[x])
创建一个包含正好1 元素的列表:ma[x]
。
也许您正在尝试这样做,以创建数组Monster
中所有ma
的列表:
java.util.Arrays.asList(ma)
/*...*/.indexOf(x)
这会尝试在列表中找到Integer
。 (自动装箱循环变量)。这显然会返回-1
,因为列表中没有Integer
s(仅Monster
s)。
要获得结果!= -1,您必须将Monster
作为参数传递给indexOf
,例如像这样的东西:
/*...*/.indexOf(ma[x])
(将返回x
btw。,如果你使用我上面的两个修改并且你的怪物都不相等(使用equals
)并且equals
是反身的,情况就是这样如果你不覆盖它)
答案 2 :(得分:0)
问题在于:
System.out.println(java.util.Arrays.asList(ma[x]).indexOf(x));
您正在指定一个索引,您不应该在asList方法的参数中。相反,试试这个:
System.out.println(java.util.Arrays.asList(ma).indexOf(x));