2017-12-29 49 views
1

3つの整数を生成し、各値を配列のインデックスに割り当てる簡単なforループを作成しようとしています。私のコードの2番目のforループは予期しない結果を返します。誰かが私に何が起こっているのか説明できますか? forループの強化を使用することによりループの配列とJavaのRNG

import java.util.Random; 

public class Main { 

public static void main(String[] args) { 

    //variables 
    int[] array = new int[3]; 
    Random rand = new Random(); 

    //all else 

    for(int item : array) {      
      array[item] = rand.nextInt(100)+1; 
      System.out.println(array[item]);         
    }  

    System.out.println("\n " + array[0] + " " + array[1] + " " + array[2]); 

    for(int i = array.length; i > 0; i--){ 
     System.out.println(array[i-1]);   
    }  

} 

} 
+0

は、なぜあなたは 'item'が意味的に正しい配列のインデックスを保持していると思います:

が正しく配列を反復するには、次の使用する必要がありますか? – Tom

+0

'int [] array = new int [3];'各インデックスにデフォルト値0の整数配列を作成します。あなたは常に0の配列値をループしています。配列に値を代入すると常に配列[0]になるので、配列[0]は最後の乱数を持ちます。他のインデックスの値はそのままです。 0。 – kratostoical

答えて

2
for (int item : array) {      
    array[item] = rand.nextInt(100)+1; 
    System.out.println(array[item]);         
} 

配列がちょうどループの開始前に初期化されたとして、itemの値は常に、0になります。基本的に、これは配列の最初のインデックスをランダムな値(定義した範囲の間)に設定して印刷するだけです。

for (int i = 0; i < array.length; i++) {      
    array[i] = rand.nextInt(100)+1; 
    System.out.println(array[i]);         
}