2012-12-23 60 views
2

我想讓我的程序檢查整個int[]數組中的每個元素是否非零。如何檢查整個數組?

我目前有:

for(int i=0; i<myArray.length; i++) 
{ 
    if(myArray[i] == 0) 
    { 
    completed = false; 
    } 
    else 
    { 
    completed = true; 
    } 
} 

但環一直這樣做else statement,如果只有一箇中間數組是非零的,並不會檢查數組的其餘部分。

+1

這不是JavaScript。 –

+0

可能的重複http://stackoverflow.com/questions/10972006/how-to-check-an-array-for-non-zero-values-elements – goonerify

回答

4

你需要把它打出來的for循環,一旦你發現了一個0:

if(myArray[i] == 0) 
    { 
    completed = false; 
    break; 
    } 

這樣一來,如果你找到一個非0元后,你就不會錯誤地置完成回到真實。

+1

丁定鼎。我們有一個勝利者。這是對的。 –

0

您可以在找到第一個0元素之後放置break;語句,以便它跳出循環。

2

您可以使用break聲明上破零值的第一次出現的循環:

boolean completed = true; 
    for(int i=0; i<myArray.length; i++) { 
    if(myArray[i] == 0) { 
     completed = false; 
     break; 
    } 
    } 

if(!completed){ 
    //array has zero values 
} 

其他重要指針:

  1. Arrays.binarySearch():只適用於排序陣列因此對您的情況沒有用處。

    使用二分搜索算法在指定的字節數組中搜索指定的值。在進行此調用之前,必須對數組進行排序(如sort(byte [])方法)。如果沒有排序,結果是不確定的。如果數組包含具有指定值的多個元素,則不能保證會找到哪個元素。

  2. indexOf方法在內部執行相同的循環和比較。所以我沒有看到你的原始模式和新語法有太大的不同。儘管它可能會讓你的代碼看起來很緊湊。

+1

+1 Arrays.binarySearch()僅適用於已排序的數組,因此在您的情況下無用。 – Ravi

-1

或者,你可以做

var completed = true; 
for(int i=0; i<myArray.length; i++) 
{ 
    if(myArray[i] == 0) 
    { 
     completed = false; 
    } 
} 

哪會做同樣的。

0

無需遍歷每個元素: JSBIN Demo

使用的IndexOf();

var myArray = [1,2,1,3]; 
var completed = myArray.indexOf(0) != -1 
+1

爲什麼不只是'var completed = myArray.indexOf(0)!= -1'? – mpen

+0

是的。你是對的 –

+0

JavaScript現在是Java嗎? – alex