1. 程式人生 > >【Java學習之路】如何去除數組裡面的0

【Java學習之路】如何去除數組裡面的0

現有如下一個陣列:   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);
		}
	}
}