2013-11-28 31 views
1

起初是開開玩笑,但我真的不明白爲什麼我的程序不會崩潰:查無界限

public class ChuckNorris { 
    char[] array; 

    public boolean HaveBounds(int i) 
    { 
     System.out.println("Because Chuck Norris knows no bounds."); 
     return false; 
    } 
    public ChuckNorris() 
    { 
     array = null; 
    } 

    public char getArrayId(int i) 
    { 
     return array[i]; 
    } 



} 


public class Main { 

    public static void main(String[] args) { 
     int i = 12; 
     ChuckNorris chuckNorris = new ChuckNorris(); 
     if(chuckNorris.HaveBounds(i)) 
     { 
      char test = chuckNorris.getArrayId(i); 
      System.out.println(test); 
     } 

    } 

} 
+0

這是我見過的最幽默的代碼。 – Domecraft

回答

5

因爲您返回false

public boolean HaveBounds(int i) 
{ 
    System.out.println("Because Chuck Norris knows no bounds."); 
    return false; 
} 

,因此你永遠不會達到

char test = chuckNorris.getArrayId(i); 

試圖訪問該數組。

如果它返回true,你會得到在呼叫NullPointerException

public char getArrayId(int i) 
{ 
    return array[i]; 
} 

因爲arraynull

+0

很好看!我不是很清醒!查克有界限! –

+0

他沒有,如果他會讓你的代碼崩潰:) – bgse