Java 在android中有时无法生成随机图像

Java 在android中有时无法生成随机图像,java,android,arrays,random,int,Java,Android,Arrays,Random,Int,我试图在android应用程序中从数组中多次生成随机图像 但这些图像只生成一次,跳过并尝试将剩余图像存储在新数组中,然后重试 再次选择一个新的随机图像。但有一段时间,我的应用程序因“IllegalArgumentException:nrandom”而崩溃。正在使用零值调用nextInt()。它找不到介于0和0之间的随机数,因此出现异常 当长度为all.length的第一个random.nextInt()调用恰好返回零时,就会出现这种情况 id = all[random.nextInt(a

我试图在android应用程序中从数组中多次生成随机图像

但这些图像只生成一次,跳过并尝试将剩余图像存储在新数组中,然后重试 再次选择一个新的随机图像。但有一段时间,我的应用程序因“IllegalArgumentException:n
random”而崩溃。正在使用零值调用nextInt()
。它找不到介于0和0之间的随机数,因此出现异常

当长度为
all.length
的第一个
random.nextInt()
调用恰好返回零时,就会出现这种情况

    id = all[random.nextInt(all.length)];   // element at index zero
这将设置all2的长度为零的条件,如索引0处的id

    final int index = Ints.indexOf(all, id);   // index zero
    all2 = Arrays.copyOf(all, index);          // zero length array
    id1 = all2[random.nextInt(all2.length)];   // kaboom!
我不会提供修复,因为我不太了解您的代码需要做什么。类似这样的操作可以阻止它爆炸,但我不确定它是否适合您尝试实现的目标。如果索引为0,则强制它为1

    all2 = Arrays.copyOf(all, index == 0 ? 1 : index);
(并对所有3应用相同的值)

random。调用nextInt()
时使用的值为零。它找不到介于0和0之间的随机数,因此出现异常

当长度为
all.length
的第一个
random.nextInt()
调用恰好返回零时,就会出现这种情况

    id = all[random.nextInt(all.length)];   // element at index zero
这将设置all2的长度为零的条件,如索引0处的id

    final int index = Ints.indexOf(all, id);   // index zero
    all2 = Arrays.copyOf(all, index);          // zero length array
    id1 = all2[random.nextInt(all2.length)];   // kaboom!
我不会提供修复,因为我不太了解您的代码需要做什么。类似这样的操作可以阻止它爆炸,但我不确定它是否适合您尝试实现的目标。如果索引为0,则强制它为1

    all2 = Arrays.copyOf(all, index == 0 ? 1 : index);

(并对所有3个应用相同)

您的答案解决了应用程序崩溃问题,但现在它只能在单个图像视图中工作。例如,我有一个像3*3=9的图像视图,我想更改一些图像的颜色(9个图像中的3个).但由于上面的代码,现在有一段时间它只对一个进行了着色。如前所述,我不理解后续数组背后的逻辑,以及它与预期结果的关系。是的,兄弟,我理解。因此,我想解决这个问题。你的答案解决了应用程序崩溃的问题,但现在有一段时间它只对单个imageview起作用。例如,我有一个imageview like 3*3=9,我想更改一些图像的颜色(9个图像中的3个)。但由于上面的代码,现在它只对一个图像进行了颜色更改。正如前面提到的,我不理解后续数组背后的逻辑,以及它与预期结果的关系。是的,兄弟,我理解。所以我必须想办法解决这个问题。