我正在尝试设计一个程序,如果它不是 0,则将数组中的值 0 与前面的元素交换。
例如,如果数组是,1 1 0 1 1 1
那么程序将继续交换,直到它变成0 1 1 1 1 1
但是当我运行时会发生这种IndexOutOfBoundException
情况。我什至尝试将 for 循环更改为:
for(int i = 1; i < newLane.length; i++)
这解决了越界问题,但使其功能不正确。
以下是我的代码:
public static int[] down(int[] lane) {
int lan = lane.length; // length of array
int[]newLane = new int[lan]; // creates new 1d matrix
for(int i = 1; i < newLane.length; i++) {
if(newLane[i-1] != 0 && newLane[i] == 0 ){ // getting out of bounds error
int tmp = newLane[i - 1];
newLane[i - 1] = newLane[i];
newLane[i] = tmp;
}
}
return newLane;
}