配列内の値 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;
}