如何以不同的方法更改数组?
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;
}
考虑将 makeArray
和 changeArray
的输出保存到几个变量中,如果您不想 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]
我想要一个创建数组的方法和一个更改数组的方法(将 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;
}
考虑将 makeArray
和 changeArray
的输出保存到几个变量中,如果您不想 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]