在另一种方法(ALGO_1)中,我搜索元素<background>
并检查 H_NAME 的值是否等于主输入的值。当我尝试运行代码时,我得到一个空指针异常。在尝试System.out.println
在片段中的每个 for 循环之后打印(使用等)H_NAME 值时,我还收到一个返回给我的空语句。
我相当确定该集合根本不存储扫描仪收集的数据。但是当我用 来检查集合大小时size()
,它的大小是正确的。
主要问题是:
- 从 readBackground 方法中是 data.add 在错误的地方吗?
- 片段是否只是结构错误?
当我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;
}