РЕДАКТИРОВАТЬ: проблема «недостижимый» оператор из-за этого
for (int i =0; 1 < 40; i++)
1 всегда меньше 40, так что это бесконечный цикл.Вы имели в виду:
for (int i = 0; i < 40; i++)
Проблема в том, что ваша переменная ourObject
имеет тип Object
, поэтому вы не можете вызвать getVectorIntValue
для нее - это не метод, объявленный в Object
.
Вы должны использовать коллекцию универсальным способом.Таким образом, компилятор будет «знать», что коллекция содержит VectorIntObject
ссылок.
Vector<VectorIntObject> vect = new Vector<VectorIntObject>();
// Code as before...
for (int i = 0; i < 10; i++) {
for (int j = 0; j <= 99; j++) {
// Note type of ourObject here, with no need to cast
VectorIntObject ourObject = vect.get(i);
if (ourObject.getVectorIntValue() == j) {
amounts[j]++;
}
}
}
Отдельно я бы рекомендовал использовать ArrayList
вместо Vector
.
Если дляпо какой-то причине вы не можете использовать Java 1.5 или выше, поэтому вы не можете использовать дженерики, вместо этого вы должны привести в свой цикл:
for (int i = 0; i < 10; i++) {
for (int j = 0; j <= 99; j++) {
VectorIntObject ourObject = (VectorIntObject) vect.get(i);
if (ourObject.getVectorIntValue() == j) {
amounts[j]++;
}
}
}
Это в основном имеет тот же эффектвремя выполнения как общая версия, но компилятор не может оказать вам такую большую помощь, потому что он не знает, какое значение будет в коллекции.