gpt4 book ai didi

java - 我不断收到错误 "Index 5 out of bounds for length 5"但不知道要更改什么

转载 作者:行者123 更新时间:2023-12-01 19:29:25 26 4
gpt4 key购买 nike

我对编码还很陌生,所以请耐心等待,我只是在尝试洗牌数组的方法,以便最终用于在我用 Java 创建的纸牌游戏中洗牌。我知道索引 5 超出了长度 5 的范围,但令我困惑的是错误并不总是弹出。有时我尝试运行我的代码,它工作得很好,有时我会收到错误,即使我在运行它之间没有更改任何内容。

public class Card{

public static void shuffle(Object[] array) {

int noOfCards = array.length;

for (int i = 0; i < noOfCards; i++) {

int s = i + (int)(Math.random() * (noOfCards - 1));

Object temp = array[s]; //this is the first line it says has a problem
array[s] = array[i];
array[i] = temp;
}
}

public static void main(String[] args) {

String[] strOfCards = {"A","B","C","D","E"};

Card.shuffle(strOfCards); //this is the second line that has a problem
for(int i = 0; i < strOfCards.length; i++) {
System.out.println(strOfCards[i] + " ");
}
}
}

我不知道如何更改有缺陷的线条,欢迎任何建议!*** 我尝试更改字符串中的字母数量,但错误随之改变,即“索引 6 超出长度 6 的范围”

最佳答案

考虑以下几行:

for (int i = 0; i < noOfCards; i++) {
int s = i + (int)(Math.random() * (noOfCards - 1));
Object temp = array[s]; //this is the first line it says has a problem

i 从 0 到 noOfCards - 1您的随机数表达式从 0 到 noOfCards - 2所以 s 从 0 变化到 (2 * noOfCards) - 3

然后array[s]每当 s >= noOfCards 时就会抛出异常

这种情况不会每次运行时都会发生,因为有时随机数恰好都在 noOfCards 下

如果您想与随机的其他卡交换,那么您可以尝试:

Random random = new Random();
int s = (i + random.nextInt(noOfCards - 1)) % noOfCards;

我知道您正在将此作为学习机会,但如果您不知道,这里有一个 Collections.shuffle可用于随机排列集合的方法,例如 ArrayList在一个命令中。

关于java - 我不断收到错误 "Index 5 out of bounds for length 5"但不知道要更改什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60219471/

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