2014-12-24 94 views
2

這是我的數組:int[] test= new int[] {1,0,1,0,0,0,0,0,0,0}如何從int數組中刪除零?

現在我需要從這個數組中刪除所有的零所以它會顯示如下:輸出:{1,1}

我想這個代碼從這個link-StackOverFlow但沒有爲我工作。

int j = 0; 
    for (int i = 0; i < test.length; i++) { 
     if (test[i] != 0) 
      test[j++] = test[i]; 
    } 
    int[] newArray = new int[j]; 
    System.arraycopy(test, 0, newArray, 0, j); 
    return newArray; 

請幫我解決這個問題。

+0

有什麼問題? –

+0

它不會從它刪除0只是返回相同。 – Sri

+0

我剛剛試過你的代碼,它工作正常! newArray = {1,1} – grig

回答

2

如果堅持與陣列工作,你可以使用此:

int n = 0; 
for (int i = 0; i < test.length; i++) { 
    if (test[i] != 0) 
     n++; 
} 

int[] newArray = new int[n]; 
int j=0; 

for (int i = 0; i < test.length; i++) { 
    if (test[i] != 0) 
     { 
     newArray[j]=test[i]; 
     j++; 
     } 
} 

return newArray; 

或嘗試使用列表:

List<Integer> list_result = new ArrayList<Integer>(); 
for(int i=0; i<test.length; i++) 
{ 
    if (test[i] != 0) 
     list_result.add(test[i]); 
} 
return list_result; 

解析名單:

for(int i=0; i<list_result.size(); i++) 
{ 
     system.out.pintln((Integer)list_result.get(i)); 
} 
+0

這工作很好,非常感謝很多 – Sri

+0

你受歡迎的 –

3

改爲使用List。那麼你可以做list.removeAll(Collections.singleton(0));。數組很難用於這種事情。

實施例:

List<Integer> list = new ArrayList<Integer>(Arrays.asList(1, 0, 2, 0, 3, 0, 0, 4)); 
list.removeAll(Collections.singleton(0)); 
System.out.println(list); 

輸出:[1,2,3,4]

+0

你好,謝謝你的時間,這段代碼沒有工作,它顯示**不能調用removeAll(設置對數組類型的int [])** :( – Sri

+1

不,它不會在數組上工作。使用'List '而不是'int []',這只是我的建議,等待幾分鐘,有人會用'int []'發佈一個答案,但我不建議這樣做。 –

+0

yeah得到但我需要動態添加該整數,所以我用int [],而運行程序我用這樣的數組添加到數組''測試=新詮釋[] {Count1,Count2,Count3,' – Sri

0

我不熟悉Java,但如果有一個下劃線或羅破折號庫即可使用;那麼你可以使用.filter功能;

此代碼來自Swift;

var numbers = [1,0,1,0,0,0,0,0,0,0] 
numbers = numbers.filter({ $0 != 0 }) // returns [1,1]