gpt4 book ai didi

java - 越界了,为什么?

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

我发现了奇怪的(至少对我而言)异常抛出。让我让它足够短。有一种方法返回具有随机值的数组。在 main 方法中,我使用 foreach 循环来显示数组中存储的每个值。

tab[i] = (int) ((Math.random()*10));

在我设置最小值之前它工作正常。

tab[i] = (int) ((Math.random()*10)+1);

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10

有人能给我解释一下吗?我不知道右侧的 +1 如何影响数组的大小。

编辑:完整代码

import java.lang.Math;

public class Arrays {

static private int[] makeArray(int wide) {

int[] tab = new int[wide];

for(int i=0;i<tab.length;i++) {
tab[i] = (int) ((Math.random()*10)+1);
}

return tab;
}

public static void main(String[] args) {
int tabby[] = makeArray(10);

for(int i : tabby) {
System.out.println(tabby[i]);
}

}

}

最佳答案

for (int i : tabby) 为您提供 tabby 数组中的值,而不是数组的索引(零到九)。只需执行 System.out.println(i)

编辑:具体来说,您应该看到该程序间歇性地抛出异常,因为您的随机数分配有十分之一的机会产生数字 10,而 tabby[10] 将出界。

关于java - 越界了,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28752830/

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