2017-02-14 31 views
-2

我的問題是,我想要一個for loop迭代通過一個數組,直到它達到null值,向數組中添加一個對象,然後停止迭代通過數組。(Java)迭代通過陣列,直到它達到空值

因此,例如,當我按下某個鍵時,它會將一個對象添加到數組中,但每次按下某個鍵時只會有一個對象。

這裏是我的代碼:

for(int i = 0; i<testArray.length; i++) 
{ 
    if(testArray[i] == null) 
    { 
     testArray[i] = new object(); 
    } 
} 

非常感謝

+4

您可能有問題,但您沒有提出任何問題。 – AntonH

+11

查找「break」關鍵字 –

+2

歡迎來到Stack Overflow!請參考[遊覽](http://stackoverflow.com/tour),環顧四周,閱讀[幫助中心](http://stackoverflow.com/help),特別是[我該如何問一個好問題?](http://stackoverflow.com/help/how-to-ask)和[我可以問什麼問題?](http://stackoverflow.com/help/on-topic)。 –

回答

2

有兩種方法可以解決這個:您可以使用break退出你的循環,也可以使用布爾標誌

示例1(中斷)

for(int i=0;i<testArray.length;i++) 
{ 
    if(testArray[i] == null) 
    { 
    testArray[i] = new object(); 
    break; 
    } 
} 

示例2:布爾標誌

boolean found = false; 
for(int i=0;i<testArray.length && !found;i++) 
{ 
    if(testArray[i] == null) 
    { 
    testArray[i] = new object(); 
    found = true; 
    } 
} 
+0

3種方法我想 - 3)在方法中使用'return'。寧願3)超過1)超過2)。不喜歡2)。 –

+0

非常感謝,我只是想知道你會選擇哪一個。 (這是更普遍接受) –

+0

我的首選是'break'。對我來說,它使得代碼更清晰,並且堆棧幀更小。另一方面,'break'不是「乾淨」 - 它實際上就像一個goto ......但是再次,我從來沒有那麼多的「清潔」編程 - 不要拍我 – ControlAltDel

-3

如果您testArray[]Object一個數組,那麼你需要使用.equals()檢查,而不是==null。然後,您可以添加break;以擺脫for-loop

for(int i=0;i<testArray.length;i++) 
{ 
    if(testArray[i].equals(null)) 
    { 
     testArray[i] = new Object(); 
     break; 
    } 
} 

或者,你可以使用一個標誌來表明它是時候跳出循環的

private boolean keepLooping = true; 
private int i = 0; 

while(keepLooping) 
{ 
    if(testArray[i].equals(null)) 
    { 
     testArray[i] = new object(); 
     keepLooping = false; 
    } 

    i++; 
} 
+1

你不需要使用'.equals()' –

+3

@ChristopherSchneider更重要的是,如果它*爲*實際上是null,那麼你會得到一個空指針異常,試圖解引用它。 – Michael

+0

@ChristopherSchneider OP可能,我們不知道。取決於該陣列中的內容。 'int [] testArray = new int [10]'不會通過空檢查,因爲'int'不能爲空。我們沒有足夠的信息。 –

0

你可以讓這樣的事情:

int i = 0; 
for(int i = 0; i<testArray.length && testArray[i] != null; i++); 

if(i < testArray.length) 
{ 
//now i will represent a position with a null element 
testArray[i] = new object(); 
} 
+0

後來希望'我

+0

要確定你可以在if條件中包含testArray [i] = new object();) –

+1

另外:仔細看,這不會編譯。 –

0

break環只要你找到元素....

這就是你所缺少的:

for(int i = 0; i<testArray.length; i++) { 
    if(testArray[i] == null) { 
     testArray[i] = new object(); 
     break; 
    } 
} 
+2

這是如何「一找到元素就打破循環......」? –

+0

尋找文件我忘了打破..:P –

0

也許KeyListener可能有幫助嗎?您只需要聽取您試圖收聽的密鑰並檢查它是否爲空

for(int i = 0; i < record.length; i++) 
     if(record[i] == null) { 
      System.out.println(i+1 + " position is null"); 
     } 

隨意自定義此設置。 ControlAltDel的休息解決方案也很棒。