java foreach改变元素

标签 java arrays foreach

<分区>

我尝试使用 forforeach 循环来打印我的排序数组。但我看到,forforeach 循环打印同一数组的不同值。我不明白我做错了什么?

代码如下:

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

最佳答案

您正在访问 myArray 的第 j 个元素,而实际上 j 是您要打印的数字。

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

关于java foreach改变元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46307264/

相关文章:

java - 哈希集在哪里存储其哈希码与集合中已有的哈希码相匹配的对象?

javascript - 如果最后一个元素在 JavaScript 中未定义,则 array.length 返回未定义

php+MYSQL+一次获取n行

java - 带选项卡的 JFace 对话框

java - 设置滚动条粗细

java - 将 DateFormatter 与 JFormattedTextField 结合使用

python - dask 数组分块如何适用于三个或更多维度?

java - 我必须创建一个 deepArray2String 方法,该方法需要一个 2D int 数组 'x' 并返回其字符串表示形式

excel - 每个循环的 VBA Excel

javascript - 为什么不允许JS forEach函数中的 'break'?