$ javac ArrayListTest.java
$ java ArrayListTest
$ cat ArrayListTest.java
import java.io.*;
import java.util.*;
public class ArrayListTest{
public static void main(String[] args) {
try {
String hello ="oeoaseu oeu hsoae sthoaust hoaeut hoasntu";
ArrayList<String> appendMe = null;
for(String s : hello.split(" "))
appendMe.add(s+" ");
for(String s : appendMe)
System.out.println(s);
//WHY DOES IT NOT PRINT?
}catch(Exception e){
}
}
}
回答
您需要初始化appendMe。
appendMe = new ArrayList<String>();
當您嘗試調用appendMe.add()
一個NullPointerException
被拋出,因爲你明確地將其設置爲null
,所以執行直接跳轉到catch塊和第二個for循環甚至沒有運行。但是,您無聲地捕獲所有異常,因此不會顯示錯誤。你應該沒有那個全球性的嘗試/抓住那裏;至少,在catch塊中添加一個e.printStackTrace();
,這樣異常不會被默默忽略
用空catch
塊編寫代碼是非常糟糕的做法。不要養成這樣做的習慣。雖然suihock捕獲你的問題的根本原因,如果你印了異常的catch塊:
} catch (Exception e) {
System.out.println("Got an exception: " + e.getMessage());
}
...你會立刻發現你的問題的原因。
首先,你是封閉你的代碼在try/catch
塊,但你吞嚥異常這是一個非常糟糕實踐。不要這樣做,這就是爲什麼你在這裏沒有得到任何有用的信息的原因。因此,要麼登錄異常或打印e.printStackTrace
在catch
塊或只是刪除try/catch
,沒有任何檢查Exception
趕上。其次,你應該編程接口,而不是具體的類(這樣,你可以在不修改整個代碼的情況下更改具體的實現)。所以,相反的:
ArrayList<String> appendMe;
聲明:
List<String> appendMe;
第三,你需要初始化appendMe
地方(這實際上是故障的根本原因,後來導致NullPointerException
)宣佈時,例如它:
List<String> appendMe = new ArrayList<String>();
最後,我建議在循環中使用括號,即使只有一行。
總結:
import java.io.*;
import java.util.*;
public class ArrayListTest{
public static void main(String[] args) {
String hello ="oeoaseu oeu hsoae sthoaust hoaeut hoasntu";
List<String> appendMe = new ArrayList<String>();
for(String s : hello.split(" ")) {
appendMe.add(s+" ");
}
for(String s : appendMe) {
System.out.println(s);
}
}
}
無法理解界面。你的意思是使用列表
@HH有點。代碼的好處可能不明顯,但是這個頁面應該讓事情變得更清晰http://mindprod.com/jgloss/interface.html#MAINTENANCE。 – 2010-04-11 03:27:28
- 1. CArray初始化和賦值問題
- 2. Java - ArrayList默認初始值
- 3. 無法初始化ArrayList
- 4. C++中的賦值vs初始化
- 5. JAVA - 問題打印ArrayList
- 6. Java的ArrayList的初始化
- 7. 與賦值不同的初始化?
- 8. ArrayList的HashMap作爲值的初始化
- 9. Java:無法打印ArrayList中的元素
- 10. 通過賦值來初始化對象?
- 11. C++數組初始化與賦值
- 12. C#初始化條件賦值
- 13. Java初始化問題
- 14. Java Arraylist重新初始化
- 15. 無法初始化角度的值
- 16. 打印值問題
- 17. 使用值初始化多維ArrayList
- 18. Perl - 打印中未初始化的值導致的錯誤
- 19. Java變量值初始化
- 20. Java的賦值函數:初始化與傳遞到參數
- 21. 在打印功能中使用未初始化的值
- 22. 初始化和命名,Java中的ArrayList
- 23. Java無法在構造函數中初始化ArrayList變量
- 24. 初始化ArrayList <Integer>的值爲零 - Java
- 25. 初始化ArrayList
- 26. 無法打印值
- 27. 打印初始化結構
- 28. Java註釋:在變量初始化時,但沒有賦值?
- 29. 使用new初始化一個變量,之後是賦值並僅初始化賦值,是否有區別?
- 30. 初始化值
+1 - 沒有空的try catch塊 - 比剛開始從事「扔」的習慣,像e.printStackTrace()從長遠來看,更多的悲傷。 – 2010-04-11 03:35:03