java - 越界了,为什么?

标签 java arrays

我发现了奇怪的(至少对我而言)异常抛出。让我让它足够短。有一种方法返回具有随机值的数组。在 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/

相关文章:

java - JSF 2.2 表单上的 tagmanager.js 不起作用。我究竟做错了什么?

java - 在 Azure 中创建空 CloudBlockBlob

java - java中String到Byte的转换

javascript - 如果 hash 仅包含 1 个字符串,则忽略其他 if 语句

java - 通过哈希码比较两个数组

php - 如何优化从 php 输入匹配多部分 rar 文件的算法

python - 为什么 python-extension 函数在创建长度大于 4 的结构数组时会中断?

java - set.iterator()......我错在哪里?

java - jsp无法插入数据库

ios - 如何根据页码排列 JSON 解析数组?