2014-09-24 36 views
1
public void arrayPrint() { 
    for(String i : array) { 
     System.out.println(i); 
    }   
} 

我找不出一種方法,以便在arrayPrint中,它可以防止發生NullPointerException。 test5發生錯誤。我嘗試添加的if語句:在Java中防止NullPointerException

public void arrayPrint() { 
    for(String i : array) { 
     if(i != null){ 
      System.out.println(i); 
     } 
    }   
} 

但它一直給錯誤:

Exception in thread "main" java.lang.NullPointerException 
at Task.printArray(Task.java:11) 
at Task.main(Task.java:38) 

11號線是在arrayPrint)環(和線路38 test5.arrayPrint(); 謝謝

回答

3

for(String i : array) {是由編譯器轉換爲類似:

for(int j = 0; j < array.length; j++) { 
    String i = array[j]; 
    ... 

,並在array.length失敗時array爲空。

欲瞭解更多信息,請參閱JLS §14.14.2

1

的問題是,Stringi已經是array對象的成員。你需要做的是檢查array對象本身是否爲null

爲了解決這個問題,您需要驗證array本身不是null

public void arrayPrint() { 
    if(array != null){ 
     for(String i : array) { 
      System.out.println(i); 
     } 
    }   
} 
1

如果你不想它炸掉,你必須做這樣的事情:

public void arrayPrint() 
{ 
    if (array != null) 
    { 
     for(String i : array) 
     { 
      if(i != null) 
      { 
       System.out.println(i); 
      } 
     } 
    }  
}