gpt4 book ai didi

java - 无法从 ArrayList 生成随机顺序

转载 作者:搜寻专家 更新时间:2023-11-01 01:49:47 24 4
gpt4 key购买 nike

这里是新手。我用 Java 编写了一个程序来帮助随机化我正在组织的音乐会的乐队顺序。我无法让代码正常工作。我得到的输出在打印三个字符串而不是四个字符串后终止,经常重复字符串(我不想要)并在第三个字符串后终止并出现以下错误:

“java.lang.IllegalArgumentException:绑定(bind)必须是积极的”

任何人都可以帮助解决我的代码问题吗?

public class BandRandomizer
{
public static void main(String[] args)
{
ArrayList<String> bands = new ArrayList<>();
bands.add("Band A");
bands.add("Band B");
bands.add("Band C");
bands.add("Band D");

Random gen = new Random();
int index = 0;

for (int i = 3; i >= 0; i--)
{
index = gen.nextInt(i);
System.out.println(bands.get(index));
bands.remove(i);
}



}

最佳答案

当您调用 nextInt(0) 时,您在最后一个循环中抛出异常:

Exception in thread "main" java.lang.IllegalArgumentException: bound must be positive at java.util.Random.nextInt(Random.java:388)

应该是:

for (int i = 4; i > 0; i--) { //changed
index = gen.nextInt(i); // return value in range [0..i) perfect for indexing
System.out.println(bands.get(index));
bands.remove(index); //changed
}

您还可以removeget 一起作为remove 返回被移除的项目:

System.out.println(bands.remove(index));

但这是一种不好的洗牌方式,使用Collections.shuffle:

Collections.shuffle(bands);
for (String band : bands) {
System.out.println(band);
}

关于java - 无法从 ArrayList 生成随机顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42984825/

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