gpt4 book ai didi

java - 无法确定出界异常的位置

转载 作者:行者123 更新时间:2023-12-01 18:15:48 25 4
gpt4 key购买 nike

我正在开发一个项目,我们正在创建一个“高效洗牌”方法,该方法接受一个数组并打乱其中值的位置。但是,我遇到了越界异常运行时错误,并且我不确定是什么原因导致的。

public static void selectionShuffle(int[] values) {
for(int k = values.length; k > 0; k--) {
int[] temp = new int[k];
double rand = Math.floor(Math.random() * k);
int r = (int) rand;
temp[r] = values[r];
values[r] = values[k]; //here is where the outofbounds error resides
values[k] = values[r];
}
}

这是方法,这是运行它的代码。这是给我的,不应该改变。

 private static final int SHUFFLE_COUNT = 1;
private static final int VALUE_COUNT = 4;

public static void main(String[] args) {
System.out.println("Results of " + SHUFFLE_COUNT +
" consecutive perfect shuffles:");
int[] values2 = new int[VALUE_COUNT];
for (int i = 0; i < values2.length; i++) {
values2[i] = i;
}
for (int j = 1; j <= SHUFFLE_COUNT; j++) {
selectionShuffle(values2); //error is referenced here, when the method is called
System.out.print(" " + j + ":");
for (int k = 0; k < values2.length; k++) {
System.out.print(" " + values2[k]);
}
System.out.println();
}
System.out.println();
}

这里的代码有点分段,只是为了更容易阅读。

最佳答案

线路

for(int k = values.length

以值的长度开始 k ,然后

values[r] = values[k];  //here is where the outofbounds error resides

导致异常,因为 Java 数组是零索引的。

您可以通过将 for 循环更改为来解决此问题

for(int k = values.length-1; k >= 0; k--)

关于java - 无法确定出界异常的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29659109/

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