2014-10-25 2 views
-4
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 예외가 발생하지 않고 출력은 다음과 같습니다.매우 혼란스러운 자바 코드를 도와주세요.

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

하지만 난을 증가하는 것을 잊지 마세요 : 그것은 당신에게 당신의 배열의 인덱스는 0과 3 사이의 정수를 줄 것이기 때문에

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

답변

1

당신은 배열 인덱스는 항상 중 하나가되고 싶어요 {0, 1, 2, 3}.

mod n (% n) 연산은 [0, n-1] 사이의 결과를 가져옵니다.

그래서 당신은 그것을 좋아 작성할 수 있습니다

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

사용 modulu 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]); 
+0

xxxxxxxxxxx –

0

를 하나의 배열의 길이를 변경할 수있는이 솔루션. 그리고 '나는'어떤 가치도 가질 수 있습니다. 그래서 배열 인덱스 바운스 예외가 발생하지 않습니다.

System.out.print(arr[i++%arr.length]); 
관련 문제