2014-10-22 2 views
3

я получаю эту ошибку:java.util.Random - «Bound должен быть положительным»

java.lang.illegalException: 
bound must be posotive 

в следующей строке кода:

Random random = new Random(); 
Item randomItem; 
randomItem = new Item("NAME_HERE", "DESCRIPTION_HERE", 0000); 
int randomNumber = random.nextInt(randomItem.randomNames.size()); *** ERROR HERE?! 
randomItem.name = randomItem.randomNames.get(randomNumber); 
addItem(randomItem); 

Это происходит только во второй раз я называю выше способ. Похоже, что (если я попытаюсь распечатать размер массива randomNames arraylist, то он фактически достигнет 0. Но это не должно ... Вот случайный элемент, в котором создается харизматик randomNames. Ничто другое, кроме вышеуказанного кода, влияние. ????

public ArrayList<String> randomNames; 
randomNames.add("Key"); 
randomNames.add("Rock"); 
randomNames.add("Balloon"); 
randomNames.add("Boot"); 
randomNames.add("Knife"); 
randomNames.add("Pencil"); 
+0

Печать 'randomItem.randomNames.size()' перед выполнением строки с ошибкой – SamTebbs33

+2

Это выглядит как код, который мы» Не видя здесь, вы вызываете randomNames.size() равным нулю. Трудно сказать, что вызывает это, основываясь на том, что мы видим здесь. –

+0

Выходной результат равен 6. –

ответ

1

Ваш randomItems размер массива равен 0. Убедитесь, что

  • randomNames не объявлен статическим
  • Конструктор Item заполняет массив randomItems
+0

public class Предмет {public ArrayList randomNames; } - не статично? Я не уверен, что вы имеете в виду со вторым моментом :) –

+0

Каждый экземпляр класса Item имеет в нем массив randomNames. Поэтому в конструкторе Item вы должны добавить свои значения в массив. Код: randomNames.add («Ключ»); randomNames.add ("Rock"); randomNames.add ("Воздушный шар"); randomNames.add ("Boot"); randomNames.add («Нож»); randomNames.add ("Карандаш"); Должно быть внутри конструктора «Item». В противном случае массив будет создан пустым при создании элемента. – Maxaon3000

+0

Ах .. Вот так! Оно работает. Спасибо!! : D Проблема была в том, что массив создан пустым :) –

0

вы инстанцирован список?

randomNames = new ArrayList<String>(); 

, то вы можете добавить все элементы, которые вы хотите.

+0

Я сделал это в поле, да :) и добавление элементов в arraylist работает отлично :) –

+0

В вашем сообщенном коде есть что-то неточное, что вызывает проблему – rickyalbert

+0

Нет никакого другого кода, ссылающегося на класс randomItem или произвольный атрибут randomNames ..: s –

Смежные вопросы