Я пытаюсь найти индекс каждого объекта в моем массиве.
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)
здесь правильно? (Ну, я, очевидно, не потому, что вывод неверен.
У вас уже есть это - это 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);
}
}
}
Проблема здесь:
System.out.println(java.util.Arrays.asList(ma[x]).indexOf(x));
Вы указываете индекс, в котором вы не должны указывать параметр asList. Вместо этого попробуйте следующее:
System.out.println(java.util.Arrays.asList(ma).indexOf(x));
ma
, но ищите индекс объекта типа Integer, а не типа Monster. Если вы хотите использовать этот подход, используйте System.out.println(java.util.Arrays.asList(ma).indexOf(ma[x]));
Давайте посмотрим, что делает ваш код:
java.util.Arrays.asList(ma[x])
создает список, содержащий ровно 1 элемент: ma[x]
.
Возможно, вы пытаетесь сделать это вместо этого, чтобы создать список всех Monster
в массиве ma
:
java.util.Arrays.asList(ma)
/*...*/.indexOf(x)
Это пытается найти Integer
в списке. (автоматический бокс вашей переменной цикла). Это, очевидно, возвращает -1
поскольку в списке нет Integer
(только Monster
s).
Чтобы получить результат! = -1, вы должны передать Monster
качестве аргумента indexOf
, например, что-то вроде этого:
/*...*/.indexOf(ma[x])
(который вернет x
btw., если вы используете мои обе модификации выше, и ни один из ваших монстров не будет равен (с использованием equals
), а equals
будет рефлексивным, что имеет место, если вы не переопределите его)
Arrays.asList(..)
? Что делаетindexOf(..)
? (Пойти посмотреть.)