你好,我一直在努力解决程序中的错误,已经花了好几个小时了,但还是找不到问题所在。我不想在这里解释我的程序应该做什么,因为我已经尽可能地用较少的代码重新制作了它来复制这个bug,这段代码只是交换了两个数组的值,为了简单起见,我让这两个数组只包含一个值,array1的值为1,array2的值为2。
每当“BUGGED”注释行被激活而不是上面那行时,输出如下所示:
交换前: 第一个值:[1] 第二个值:[2] 交换后: 第一个值:[2] 第二个值:[2]
如果使用第一行,则输出正确(交换后:2 1)。
我应该补充说明,如果我创建多个数组(任意数量),则该错误仅出现在第一个和最后一个值。
例如,如果我创建4个值分别为1、2、3和4的数组并尝试进行交换,则只有第一个和最后一个数组的值会发生变化。
temp < 1 < 2 < 3 < 4 < temp
我将在最后遇到这种情况:2、3、4、2。
以下是主类的代码。
class Testing {
int[] one = {1};
int[] two = {2};
TestingArray array1 = new TestingArray(one);
TestingArray array2 = new TestingArray(two);
public static void main(String[] args) {
Testing test = new Testing();
System.out.println("Before swap:");
System.out.println("First value: "+Arrays.toString(test.getArray1()));
System.out.println("Second value: "+Arrays.toString(test.getArray2()));
test.swap();
System.out.println("After swap:");
System.out.println("First value: "+Arrays.toString(test.getArray1()));
System.out.println("Second value: "+Arrays.toString(test.getArray2()));
}
int[] getArray1() {
return array1.getArray();
}
int[] getArray2() {
return array2.getArray();
}
void swap() {
int[] temp = array1.getArray();
array1.setArray(array2.getArray());
array2.setArray(temp);
}
}
这是第二个类。
public class TestingArray {
private int[] array = new int[1];
TestingArray (int[] value) {
this.array = value;
}
int[] getArray() {
return array;
}
void setArray(int[] array) {
this.array = array;
// this.array[0] = array[0]; // BUGGED
}
}
非常期待你的回答,我真的很迷茫。
[2], [1]
,问题出在哪里? - Maljam