请帮助我解决它非常混乱的java代码

时间:2014-10-25 05:36:44

标签: java

public class Test {
public static void main(String[] args) {
    int arr[] = {1,2,3,4};

    int i=0;
    while (i<20)
    {
        System.out.println(arr[?]); 
    }

}}

我们应该写什么代替?这样就不会发生ArrayIndexOutOfBounds异常,输出如下?

1
2
3
4
1
2
3
4
1
2
3
4
1
2
3
4
1
2
3
4

3 个答案:

答案 0 :(得分:2)

使用modulu 4,因为这会给你0到3之间的整数,这是你的数组的索引:

System.out.println(arr[i%4]);

但别忘了增加我。

int arr[] = {1,2,3,4};

int i=0;
while (i<20)
{
    System.out.println(arr[i%4]); 
    i++;
}

一个更简洁的解决方案(虽然我认为可读性较差),将结合这两个陈述:

System.out.println(arr[(i++)%4]); 

答案 1 :(得分:1)

您希望数组索引始终为{0,1,2,3}中的一个。

mod n(%n)操作将在[0,n-1]中得到结果。

所以你可以这样写:

System.out.println(arr[(i++)%4]);

答案 2 :(得分:0)

使用此解决方案,可以改变阵列的长度。并且&#39;我&#39;可以采取任何价值。因此不会发生Array Index Out Of Bound异常。

System.out.print(arr[i++%arr.length]);