2017-05-06 40 views
-3

我是新來的java,目前正在研究它使&以各種方式嘗試。如何避免null(string sth:array)java

我想打印輸出數組中沒有null的值,使用for(String sth:array)語法。所以,我想它首先像,

for(String sth : arr){ 
    if(arr[sth] != null) 
    System.out.println(arr[sth]); 
} 

,但它沒有工作,所以我想也很喜歡

for(String sth : arr){ 
    if(arr[Integer.valueOf(sth)] != null) 
    System.out.println(arr[Integer.valueOf(sth)]); 
} 

,但它沒有工作過。

是否可以避免空值,而不使用下面的這個方法?

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

(我搜索我的問題在本網站的30分鐘,但我無法找到我的任何類似的問題,所以我寫了這個問題。我誤解一個基本的Java語法?)

任何評論我會很高興。

+0

只是一個評論:這種事情(空值碼測試)往往是一個跡象,表明有在你的設計還是有問題實現。通常情況下,最好避免1)首先不允許空值,或者2)如果這是一個「數組實現列表」,通過將空值移到末尾並跟蹤最後一個非空索引。 –

+0

另外:你不應該說「但它不工作」。告訴我們*如何*它不起作用。 (編譯錯誤?NPE?其他?) –

+0

'sth'是一個指向數組入口本身的指針,而不是數組索引。 –

回答

2

for-each可以像數組中的每個元素sth一樣讀取(做某事)。像

for (String sth : arr) { 
    if (sth != null) { 
     System.out.println(sth); 
    } 
} 

,在Java 8+,

Stream.of(arr).filter(x -> x != null).forEachOrdered(System.out::println); 
+0

謝謝你的回覆。它真的幫助了我。 – Guieen