如何以不同的方法更改数组?

How to change an array in a different method?

我想要一个创建数组的方法和一个更改数组的方法(将 13 变成 6 并在第四项上加 2),然后在变量中捕获更改和未更改的数组,但我似乎无法在不出现错误的情况下在主函数中调用已更改的数组

public class ArrayFillApp {

    public static void main(String[] args) {
        ArrayFill arrayFill = new ArrayFill();
        arrayFill.makeArray();
        for(int value: arrayFill.makeArray()){
            System.out.println(value);
        }
    }
}

public class ArrayFill {

    public int[] makeArray(){
        int[] array = {
            6, 13, 34, -10, 15
        };
        return array;
    }

    public int[] changeArray(int[] array){
        array[1] = 6;
        array[3] = array[3] + 2;
        int[] arrayCopy = new int[array.length];
        for (int value: array) {
            array[value] = arrayCopy[value];
        }
        return arrayCopy;
    }
}

您可以使用局部变量引用来保存数组。不要调用 makeArray 两次。没有必要。只需声明一个本地引用并分配它。然后将该引用传递给第二种方法。

ArrayFill arrayFill = new ArrayFill();
int[] array = arrayFill.makeArray();
array = arrayFill.changeArray(array); // OR,
// arrayFill.changeArray(array); // It's the same array.
for(int value : array){
    System.out.println(value);
}

此外,在 changeArray 中您不需要复制数组。

public int[] changeArray(int[] array){
    array[1] = 6;
    array[3] += 2;
    return array;
}

考虑将 makeArraychangeArray 的输出保存到几个变量中,如果您不想 changeArray 修改 [=22],则使用 clone =] 数组(假设是这种情况,因为您正在制作副本):

import java.util.Arrays;

public class ArrayFillApp {
    public static void main(String[] args) {
        ArrayFill arrayFill = new ArrayFill();
        int[] originalArray = arrayFill.makeArray();
        int[] changedArray = arrayFill.changeArray(originalArray);
        System.out.printf("originalArray: %s%n", Arrays.toString(originalArray));
        System.out.printf("changedArray: %s%n", Arrays.toString(changedArray));
    }
}

public class ArrayFill {
    public int[] makeArray() {
        return new int[]{6, 13, 34, -10, 15};
    }

    public int[] changeArray(int[] array) {
        int[] arrayCopy = array.clone();
        arrayCopy[1] = 6;
        arrayCopy[3] += 2;
        return arrayCopy;
    }
}

输出:

originalArray: [6, 13, 34, -10, 15]
changedArray: [6, 6, 34, -8, 15]