1. 程式人生 > >Java陣列——去掉0元素合成新陣列

Java陣列——去掉0元素合成新陣列

1.現在有如下一個陣列: 

   Int oldarr[]={1,5,9,0,4,0,3,6,0,7,8,0};

 要求將以上陣列中的0項去掉,將不為0的值存入一個新的陣列;

2.思路:

我們可以定義兩個陣列,舊陣列中是原陣列,新陣列是舊陣列中去掉0元素的其他元素;

要想列印新陣列,必須動態初始化陣列,且遍歷的時候必須知道新陣列的長度;

新陣列長度可以用舊陣列長度減去0元素的個數;

要想求出0元素的個數,用迴圈遍歷舊陣列即可;

最後將舊陣列中非0元素賦值給新陣列即可;

package Hello;

public class test {

	public static void main(String[] args) {
		//定義陣列並初始化
		int oldarr[]=new int[]{1,5,9,0,4,0,3,6,0,7,8,0};
		//得到舊陣列零的個數
		int count=0;
		for(int i=0;i<oldarr.length;i++){
			if(oldarr[i]==0){
				count++;
			}
		}
		//定義新陣列,由於這裡需要得知新陣列的長度,因此必須求出舊陣列中零的個數
		int newarr[]=new int[oldarr.length-count];
		//遍歷原來的舊陣列
		for(int i=0,j=0;i<oldarr.length;i++){
			//將舊陣列中不等於0的元素賦給新陣列
			if(oldarr[i]!=0){
				newarr[j]=oldarr[i];
				j++;
			}
		}
		System.out.println("舊陣列:");
		for(int a:oldarr){
			System.out.print(a+" ");
		}
		System.out.println();
		System.out.println("新陣列:");
		for(int a:newarr){
			System.out.print(a+" ");
		}
	}
}

結果為: