2017-09-19 15 views
1

私は並べ替えられた配列を印刷するためにforforeachループを使用しようとします。しかし、私は、forforeachループは、同じ配列の異なる値を出力することがわかります。私は何が間違っているのか理解できません。java foreach変更の要素

以下のコード:ここで

import java.util.Random; 

class ArraysTest { 
    public static void main(String[] args) { 

     int[] myArray = new int[20]; 
     Random rand = new Random(); 

     System.out.println("*** Unsorted array ***"); 

     // filling myArray by random int values 
     for(int i = 0; i < myArray.length; i++) { 
      myArray[i] = (rand.nextInt(i+1)); 
      System.out.print(myArray[i] + " "); 
     } System.out.println("\n"); 

     // sorting myArray 
     java.util.Arrays.parallelSort(myArray); 

     System.out.println("*** Sorted array \"for-loop\" ***"); 
     // printing values in console with for-loop 
     for(int i = 0; i < myArray.length; i++) { 
      System.out.print(myArray[i] + " "); 
     } System.out.println("\n"); 

     System.out.println("*** Sorted array \"foreach-loop\" ***"); 
     // printing values in console with foreach-loop 
     for(int j : myArray) { 
      System.out.print(myArray[j] + " "); 
     } 
    } 
} 

が出てコンソールです:

*** Unsorted array *** 
0 1 1 3 3 1 5 1 7 4 2 0 6 11 0 3 7 0 3 17 

*** Sorted array "for-loop" *** 
0 0 0 0 1 1 1 1 2 3 3 3 3 4 5 6 7 7 11 17 

*** Sorted array "foreach-loop" *** 
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 3 7 
+1

、jは値ではない指標であり、ちょうどJを印刷しよう); – MinMiguelM

+0

うん、それは働いた!ありがとう! –

答えて

4

実際にはjが印刷したい番号であるときは、MyArrayというのj番目の要素にアクセスしています。

for(int j:myArray){ 
    System.out.print(j + " "); 
} 
+0

はい、うまくいきます!ありがとう) –

3
System.out.println("*** Sorted array \"foreach-loop\" ***"); 
    // printing values in console with foreach-loop 
    for(int j : myArray) { 
     System.out.print(myArray[j] + " "); <--- 
    } 

問題は、あなたが配列から要素を取得しているこのラインであるj、代わりにそれを印刷する、あなたはそれが再びアレイにアクセス使用しています。あなたのprint文は、あるべき

System.out.print(j + " ") 
1

あなたの問題は、あなたがのために、各ループ索引jと何を印刷したい時に値を印刷している中で、変数jが持つ値が実際にあるということです。だから、これを置き換えます。これで

for(int j : myArray) { 
    System.out.print(myArray[j] + " "); 
} 

: System.out.print(J + "":ための第二で

for(int j : myArray) { 
    System.out.print(j + " "); 
} 
関連する問題