2014-03-31 41 views
1

希望标题解释我想要的。我需要一组随机顺序的数字1-12,但不会得到空结果。生成没有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] 

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

+0

数组下标从0开始!而你从来没有设置元素0 ... – fge

回答

3

您并未初始化数组中的第一个元素。从0

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

开始,而不是1

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

哎呀。我必须不小心尝试了2种获得1-12的方法,并忘记删除第一个。谢谢。 –

1

Arrays0 based,所以第一要素应该从0指数,不1

被启动:在你循环与我开始= 0,这样

所以试图改变像你的代码:

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

欲了解更多详情,请阅读更多关于arrays

1

0

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

启动for循环要初始化循环变量i为1,结果在阵列ARR [0]被从未分配的值默认为空。您的循环应为(int i = 0; i < arr.length; i ++)