2013-04-22 66 views
-3

我有一個5大小的數組,我想從隨機函數中分配值,如果任何索引沒有它。如何同時檢查一個while循環中的所有數組索引Java

while(positionXtoStart==array1[0] || positionXtoStart==array1[1] || 
     positionXtoStart==array1[2] || positionXtoStart==array1[3] || 
     positionXtoStart==array1[4]) 
{  
    positionXtoStart = (rand1.nextInt(400) + 1)+30; 
} 

該溶液是確定爲陣列的小尺寸,但如果我有陣列的1000尺寸,我不能在while循環輸入1000次的條件。

我試過For-loop if-else條件,但 的問題是,我想同時檢查所有數組索引。

請嘗試瞭解我在問什麼。我想同時檢查所有數組索引值(一次性)

在for循環中,我們一次只能檢查一個值。

回答

0

不幸的是,你所要求的是不可能的。即使在您的代碼中:

while(positionXtoStart==array1[0] || positionXtoStart==array1[1] || 
    positionXtoStart==array1[2] || positionXtoStart==array1[3] || 
    positionXtoStart==array1[4]) 

計算機正在一次檢查一個條件。它不是一次完成所有的條件,就像你可能認爲的那樣。您發佈的代碼與@Supericy和@Samiam發佈的代碼相同。

除非有理由說明forloops不適合您的情況,否則我會說這裏的答案與此處相同。

1

如果我理解正確,您只需要遍歷數組,檢查每個值。

for (int i = 0; i < array1.length; i++) 
{ 
    if (array1[i] == positionXtoStart) 
    { 
     positionXtoStart = (rand1.nextInt(400) + 1)+30; 

     break; // exit the loop 
    } 
} 
+0

不,我要求在循環中一次檢查每個值,如果條件是一次檢查一個值。 – OMAiS 2013-04-22 21:07:16

+0

我想在同一時間檢查所有值 – OMAiS 2013-04-22 21:08:00

+0

@OMAiS你(或電腦,或任何東西)在給定的時間只能做一件事。計算機只能在給定的時間比較兩個值。 – wtsang02 2013-04-22 21:09:29

1

你在找這樣的事嗎?

for(int i=0; i<array1.length; i++) 
    if(array[i] == whatever) 
    { 
     // do stuff 
    } 
0

如果你必須檢查每個條目,你必須通過整個陣列。一個無序數組不適合搜索它。也許你應該考慮將你的數據結構變成類似BST的東西,這樣你就有了一個保證的O(logn)搜索。

要比較無序數組中的所有元素,您需要線性時間。