Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.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
ArrayList中的get Random有java.lang.IllegalArgumentException错误:n必须为正_Java_Arraylist - Fatal编程技术网

ArrayList中的get Random有java.lang.IllegalArgumentException错误:n必须为正

ArrayList中的get Random有java.lang.IllegalArgumentException错误:n必须为正,java,arraylist,Java,Arraylist,在我的ArrayList中,我从ArrayList中获得了一个随机项,用于Equipm方法 每当我使用我的测试仪时,当我尝试调用random获取大小时,终端窗口打印java.lang.IllegalArgumentException:n必须为正 我试图将totalElements的值更改为元素的整数大小,那么错误将是outofboundseption import java.util.*; import java.util.Scanner; import java.util.Random; pu

在我的ArrayList中,我从ArrayList中获得了一个随机项,用于Equipm方法

每当我使用我的测试仪时,当我尝试调用random获取大小时,终端窗口打印
java.lang.IllegalArgumentException:n必须为正

我试图将totalElements的值更改为元素的整数大小,那么错误将是
outofboundseption

import java.util.*;
import java.util.Scanner;
import java.util.Random;
public class GameMaster {



    private int turn, totalElements;
    private boolean winner;
    private Avatar x1;
    private Avatar x2;
    private ArrayList<Item> inventory;

    public GameMaster(Avatar a1, Avatar a2)
    {

    x2 = a1;
    x1 = a2;
    turn = 1;
    winner = false;
    inventory = new ArrayList<Item>();
    totalElements = 0;

    }

    private void fillInventory()
    {

    inventory.add( new Item( "Zealot Blades", true, 8 ) );
    inventory.add( new Item( "BFG", true, 13 ) );
    inventory.add( new Item( "Synthetic Cloth", false, 7 ) );
    // more items 


    inventory.add( new Item( "Gauss Rifle", true, 9 ) );
    inventory.add( new Item( "Flight Unit", false, 6 ) );

    totalElements = inventory.size();


    }

    public String equip()
    {
    Avatar w;
    String a;
    if (turn%2==1)
            w=x2;
    else 
            w=x1;

    if (w.beltIsFull())
    {

            a = w.getName() + "'s belt is full. \n";
    }

    else
    {
            turn++;
            Random generator = new Random();  
            Item rand = inventory.get(generator.nextInt(totalElements));
            //terminal window in blueJ: java.lang.IllegalArgumentException: n must be positive              

            a = w.getName()+" is equiped with "+rand.getName()+".";



    }
    return a;

}
import java.util.*;
导入java.util.Scanner;
导入java.util.Random;
公共类游戏大师{
私有int-turn,totalElements;
私有布尔赢家;
私人化身x1;
私人化身x2;
私有ArrayList目录;
公共游戏大师(阿凡达a1、阿凡达a2)
{
x2=a1;
x1=a2;
圈数=1;
胜利者=假;
库存=新的ArrayList();
总元素=0;
}
私有库存()
{
添加(新项目(“狂热者之刃”,正确,8));
添加(新项目(“BFG”,正确,13));
增加(新项目(“合成布”,假,7));
//更多项目
添加(新项目(“高斯步枪”,正确,9));
添加(新项目(“飞行单位”,假,6));
totalElements=inventory.size();
}
公共字符串设备()
{
化身w;
字符串a;
如果(回合%2==1)
w=x2;
其他的
w=x1;
如果(w.beltIsFull())
{
a=w.getName()+““的皮带已满。\n”;
}
其他的
{
turn++;
随机生成器=新随机();
Item rand=inventory.get(generator.nextInt(totalElements));
//blueJ:java.lang.IllegalArgumentException:n中的终端窗口必须为正
a=w.getName()+“配备有“+rand.getName()+”;
}
返回a;
}

例外情况是告诉您,
totalElements
小于或等于零。我认为这是因为您尚未初始化它。(我可以看到
fillInventory
方法,但我看不到您的代码在哪里调用它…)

我试图将totalElements更改为清单中的元素数,错误变为java.lang.IndexOutOfBoundsException:Index:27,Size:0这表示在引发异常时,清单对象实际上包含零个元素。