2014-09-17 2 views
2

크기 10의 "배열"을 생성하고 For 루프에서 역방향 값을 사용하여 초기화하려고하는 샘플 코드가 있습니다 (예 : 9,8,7,6,5 ...). 0) :for Java의 각 루프

int[] array = new int[10]; 
     for (int i = array.length - 1, j = 0; i >= 0; i--, j++) { 
      System.out.println("Present value of i=" + i 
        + " Present value of j=" + j); 
      array[j] = i; 
      System.out.println("Array:" + j + "=" + i); 
     } 
     for (int k : array) { 
      System.out.println(array[k]); 
     } 

지금까지 그렇게 좋았습니다. 이것은 완벽 콘솔로부터의 출력이다

Present value of i=9 Present value of j=0 
Array:0=9 
Present value of i=8 Present value of j=1 
Array:1=8 
Present value of i=7 Present value of j=2 
Array:2=7 
Present value of i=6 Present value of j=3 
Array:3=6 
Present value of i=5 Present value of j=4 
Array:4=5 
Present value of i=4 Present value of j=5 
Array:5=4 
Present value of i=3 Present value of j=6 
Array:6=3 
Present value of i=2 Present value of j=7 
Array:7=2 
Present value of i=1 Present value of j=8 
Array:8=1 
Present value of i=0 Present value of j=9 
Array:9=0 

문제가 함께 피 각 단 배열의 값을 인쇄하고 결국 루프 :

for (int k : array) { 
      System.out.println(array[k]); 
     } 

값 인쇄 어레이 0,1,2 ... 9 여기서 9,8,7 ... 0

일반 For 루프를 사용하여 배열을 인쇄하면 정상적으로 작동합니다. 나는 여기서 재미있는 사업을 놓치고 있니?

+1

for (int k : array)는 무슨 뜻입니까? 'array [k]'는 무엇을 의미합니까? –

+0

배열의 값은 무엇입니까? –

+3

밖으로 던지십시오. ** Java! = Javascript **. 당신이하는 일은 자바 스크립트가 작동하는 방식입니다. 고급'for ... in' 루프는 객체의 키를 반복합니다. 자바의 for-each 루프는 * values ​​*에서만 작동합니다. 열쇠 개념이 없습니다. – Qix

답변

6

를, 무엇을 당신이 한 것은

와 같습니다.
System.out.println(array[array[0]]); 
System.out.println(array[array[1]]); 
System.out.println(array[array[2]]); 
System.out.println(array[array[3]]); 
... 
System.out.println(array[array[9]]); 

원하는 내용이 아닙니다. 루프

11

foreach 루프를 사용하여 array에서 이미 값을 얻고 있습니다.이 값은 배열의 인덱스로 다시 사용되며 다시 값을 생성합니다.

그냥 k으로 인쇄하십시오. 출력의

for (int k : array) { 
    System.out.println(array[k]); 
} 

for (int k : array) { 
    System.out.println(k); 
} 

에 끝 변경 : (int k : array) 배열이 아니라 인덱스에 값을 통해k가 발생하기 때문에, 기본적으로

9 
8 
7 
6 
5 
4 
3 
2 
1 
0 
+1

혼란스러운 사람들에게; 'for (var key in array) {var val = array [key]}'는 자바에서 키를 반복하는 방법입니다. Java의 foreach 루프는 값을 직접 사용합니다. 나는 이것이 이것이 혼란의 근원이라고 생각한다. – Qix

0

이, 대 (INT의 K : 어레이)는 기본적으로 루프이 비슷하면 상세히 배열 값을 준다 -

INT의 K = 어레이 [0] = 9 INT의 K = 배열 ​​[1 = 8 .....

다시는 [9], 어레이 [8]주는가 은 (int k에 대한 교체 ... 0,1,2 같은 결과 배열을 인쇄하려고 : 배열) { System. out. println (array [k]); } (int K : 어레이)와 대

{ System. out. println (k); }