在另一种方法(ALGO_1)中,我搜索<background>
的元素并检查值H_NAME是否等于输入到main中的值。当我尝试运行代码时,出现空指针异常。在尝试打印(在System.out.println
等中)每个for循环后面的H_NAME值时,我也会收到一条返回给我的空语句。NullPointerException:两个集合和一个for循环
我相当确定这个集合根本不存储扫描器收集的数据。但是当我用size()
检查收藏尺寸时,它的尺寸是正确的。
主要问题是:
- 从readBackground方法是放错了地方的data.add?
- 是错误地简单构造的片段?
当我使用System.out.println
来检查Background对象的值名称,开始时间,增量等,他们打印出来很好。
for (Hydro hd: hydros) {
System.out.println(hd.H_NAME);
for (Background back : backgs) {
System.out.println(back.H_NAME);
if (back.H_NAME.equals(hydroName)) { //get error here
public static Collection<Background> readBackground(String url) throws IOException {
URL u = new URL(url);
InputStream is = u.openStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader b = new BufferedReader(isr);
String line ="";
Vector<Background> data = new Vector<Background>();
while ((line = b.readLine())!= null) {
Scanner s = new Scanner(line);
String name = s.next();
double starttime = Double.parseDouble(s.next());
double increment = Double.parseDouble(s.next());
double sum = 0;
double p = 0;
double nterms = 0;
while ((s.hasNextDouble())) {
p = Double.parseDouble(s.next());
nterms++;
sum += p;
}
double pbmean = sum/nterms;
Background SAMP = new Background(name, starttime, increment, pbmean);
data.add(SAMP);
}
return data;
}
那么,对于初学者,您可能想尝试格式化代码,使其更具可读性。你也可以考虑让我们看看其余部分,因为必须有一些东西丢失。 – 2010-03-20 01:58:34