我試圖設計一個程序來交換在與前述元素的數組的值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;
}
[I-1]'如果從1開始,你會沒事的,但跳過第一個元素(就像你現在所做的那樣)。如果你從0開始,你會得到一個ArrayIndexOutOfBoundsException。我的建議是從1開始,並在循環之外(之前)進行第一次。 – 11684
什麼是「功能不正確」btw? – 11684