$ 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. Java - ArrayList默认初始值
- 2. C++中的赋值vs初始化
- 3. JAVA - 问题打印ArrayList
- 4. 通过赋值来初始化对象?
- 5. C#初始化条件赋值
- 6. Java Arraylist重新初始化
- 7. Java初始化问题
- 8. Java变量值初始化
- 9. 打印值问题
- 10. Java的赋值函数:初始化与传递到参数
- 11. 在打印功能中使用未初始化的值
- 12. 初始化和命名,Java中的ArrayList
- 13. Java无法在构造函数中初始化ArrayList变量
- 14. 初始化ArrayList
- 15. 使用new初始化一个变量,之后是赋值并仅初始化赋值,是否有区别?
- 16. 初始化值
- 17. 初始化值
- 18. ArrayList在java中未正确初始化
- 19. C#WPF的问题:无法初始化ComboBox中选定值正确
- 20. UIPicker - 初始值问题
- 21. 无法用初始值列表初始化QQueue
- 22. 无法打印java数组索引值
- 23. 问题初始化方法的参数与默认值
- 24. 初始化UITableViewCell初始化问题initwithStyle
- 25. 的Java初始化顺序问题,静态VS例如下面打印字段
- 26. 直接初始化与值初始化
- 27. JAVA - 问题初始化数组的
- 28. 将函数赋值给For循环中的初始化变量?
- 29. 在方法中初始化Arraylist
- 30. 初始化问题?
+1 - 没有空的try catch块 - 比刚开始从事“扔”的习惯,像e.printStackTrace()从长远来看,更多的悲伤。 – 2010-04-11 03:35:03