Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java.util.random-“文件”;“绑定必须为正”;_Java_Random_Indexoutofboundsexception - Fatal编程技术网

Java.util.random-“文件”;“绑定必须为正”;

Java.util.random-“文件”;“绑定必须为正”;,java,random,indexoutofboundsexception,Java,Random,Indexoutofboundsexception,我得到这个错误: 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()); ***

我得到这个错误:

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。但它不应该…这是randomItem,创建randomNames arraylist的地方..除了上面的代码之外,没有其他影响

public ArrayList<String> randomNames;
randomNames.add("Key");
randomNames.add("Rock");
randomNames.add("Balloon");
randomNames.add("Boot");
randomNames.add("Knife");
randomNames.add("Pencil");
公共数组列表随机名称;
随机名称。添加(“键”);
随机名称。添加(“岩石”);
随机名称。添加(“气球”);
随机名称。添加(“启动”);
随机名称。添加(“刀”);
随机名称。添加(“铅笔”);

您是否实例化了您的列表

randomNames = new ArrayList<String>();
randomNames=newarraylist();

然后您可以添加所需的所有项目。

您的randomItems数组大小为0。请检查该值

  • randomNames不是声明为静态的
  • 项构造函数填充随机项数组

打印
randomItem.randomNames.size()
在执行带有错误的行之前,我们在这里没有看到的一些代码似乎导致randomNames.size()为零。根据我们在这里看到的结果,很难说是什么导致了这一结果输出应该是6。randomItem.randomNames.size()可能正在返回0尝试在调试器中查找从6到0的位置。我在字段中执行了此操作,是:)并将项添加到arraylist中效果良好:)报告的代码中没有导致此问题的内容根本没有其他代码引用randomItem类或randomNames arraylist..:sI将在'Item'构造函数'randomNames=new ArrayList();'然后写“项目”和“项目”;randomItem=新项目(“此处的名称”、“此处的说明”,0000);更面向对象的解决方案是使列表成为Item类的私有字段。在项构造函数中实例化列表(新ArrayList),然后创建一个方法void addRandomName(String random){randomNames.add(random);}和一个方法list getRandomNames(){return randomNames;}公共类项{public ArrayList randomNames;}-非静态?我不确定第二点的意思:)类项的每个实例都有一个randomNames数组。因此,在Item的构造函数中,必须将值添加到数组中。代码:randomNames.add(“Key”);随机名称。添加(“岩石”);随机名称。添加(“气球”);随机名称。添加(“启动”);随机名称。添加(“刀”);随机名称。添加(“铅笔”);应该在“项”构造函数中。否则,在创建项时数组将被创建为空。啊。。就这样!它起作用了。谢谢!!:D问题恰恰是数组创建为空:)