生成随机数1-12而不为空?

时间:2014-03-31 07:45:15

标签: java arrays random null

希望标题解释我想要的东西。我想要一组随机顺序的数字1-12,但不能得到一个空结果。

这是我的代码:

Integer[] arr = new Integer[12];

    for(int i = 1; i < arr.length; i++)
    {
        arr[i] = i+1; //With this not being i+1, I get 0-11. Like this, I get null-12 and no 1.

        if (arr[i] ==  null)
        {
            arr[i] = 1;
        }
    }

    Collections.shuffle(Arrays.asList(arr));
    System.out.println(Arrays.asList(arr));

以下是我得到的结果:

[null, 5, 3, 10, 7, 2, 9, 4, 6, 12, 8, 11]

如何转换null,因为我的if语句什么都不做?

5 个答案:

答案 0 :(得分:3)

您没有初始化数组中的第一个元素。在循环中以i = 0开始,如下所示:

for(int i = 0; i < arr.length; i++)

答案 1 :(得分:1)

从0而不是1

开始
for(int i = 0; i < arr.length; i++)

答案 2 :(得分:1)

Arrays0 based,因此第一个元素应该从0索引开始,而不是1

因此,请尝试更改您的代码:

 for(int i = 0; i < arr.length; i++)

了解更多详情,请详细了解arrays

答案 3 :(得分:1)

0

开始你的for循环
for(int i = 0; i < arr.length; i++)

答案 4 :(得分:1)

您正在将循环变量i初始化为1,因此从不为数组arr [0]分配一个默认值为null的值。你的循环应该是(int i = 0; i&lt; arr.length; i ++)