在另一種方法(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