【发布时间】:2010-03-20 01:22:34
【问题描述】:
在另一种方法 (ALGO_1) 中,我搜索 <background> 的元素并检查值 H_NAME 是否等于在 main 中输入的值。当我尝试运行代码时,我得到一个空指针异常。在尝试在 sn-p 中的每个 for 循环之后打印(使用 System.out.println 等)H_NAME 值时,我还收到一个返回给我的空语句。
我相当确定该集合根本没有存储扫描仪收集的数据。但是当我使用size() 检查集合大小时,它的大小大约是正确的。
主要问题是:
- readBackground 方法中的 data.add 是不是放错地方了?
- sn-p 是不是结构错误?
当我使用System.out.println 检查背景对象值名称、开始时间、增量等时,它们打印出来的效果很好。
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;
}
【问题讨论】:
-
好吧,对于初学者,您可能想尝试格式化代码,使其更具可读性。你也可以考虑让我们看看剩下的部分,因为肯定少了一些东西。
标签: c# for-loop collections nullpointerexception nested-loops