gpt4 book ai didi

java - ArrayList 中的 get Random 出现 java.lang.IllegalArgumentException : n must be positive 错误

转载 作者:行者123 更新时间:2023-12-01 15:08:27 24 4
gpt4 key购买 nike

在我的 ArrayList 中,我从 ArrayList 中获取了一个随机项目用于装备方法。

每当我使用测试仪时,终端窗口都会打印 java.lang.IllegalArgumentException: n must be positive当我尝试随机调用大小时。

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

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;

}

最佳答案

异常告诉您 totalElements 小于或等于零。我认为那是因为你还没有初始化它。 (我可以看到 fillInventory 方法,但我看不到您的代码在哪里调用它...)

关于java - ArrayList 中的 get Random 出现 java.lang.IllegalArgumentException : n must be positive 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12653442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com