【Java學習之路】如何去除數組裡面的0
阿新 • • 發佈:2019-01-06
現有如下一個陣列: int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}
要求將以上陣列中值為0的項去掉,將不為0的值存入一個新的陣列,生成的新陣列為: int newArr [] ={1,3,4,5,6,6,5,4,7,6,7,5}
思路: 確定出不為0的個數,這樣可以開闢新陣列;從舊的陣列之中,取出內容,並將其賦給新開闢的陣列。
首先數是有預設值的,比如一個int型別的陣列,如果沒有賦值的話,它的預設值是0,所以如果一個數組的下標沒有寫滿的話,那麼多餘出來的值就會是0,這樣就與題意不符,所以我們建立的陣列的長度正好是oldArr陣列去掉0的長度。
我們應該先判斷oldArr數組裡面有多少個0或者有多少個不為0的數,這樣我們就可以直到不為0的有多少個,從而可以一次定義一個等長的陣列。
程式碼如下:
public class Test { public static void main(String[] args) { // 定義陣列 int oldArr[] = { 1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5 }; int h = 0; // 設定一個變數作為增量 // 迴圈讀取oldArr陣列的值 for (int b : oldArr) { // 判斷,如果oldArr陣列的值不為0那麼h就加1 if (b != 0) { h++; } } // 得到了數組裡不為0的個數,以此個數定義一個新陣列,長度就是h int newArr[] = new int[h]; // 這裡偷個懶,不想從新定義增量了,所以把增量的值改為0 h = 0; // 在次迴圈讀取oldArr陣列的值 for (int c : oldArr) { // 把不為0的值寫入到newArr數組裡面 if (c != 0) { newArr[h] = c; h++;// h作為newArr陣列的下標,沒寫如一個值,下標h加1 } } // 迴圈列印newArr陣列的值 for (int d : newArr) { System.out.println(d); } } }