0

別のメソッド (ALGO_1) では、要素を検索し<background>、値 H_NAME がメインに入力された値と等しいことを確認します。コードを実行しようとすると、null ポインター例外が発生します。System.out.printlnスニペットの各 for ループの後に H_NAME 値を(などで) 出力しようとすると、null ステートメントも返されます。

コレクションが、スキャナーによって収集されたデータを格納していないことは確かです。でもコレクションサイズを で確認すると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;  
            }
4

1 に答える 1

0

を呼び出したときに NullPointerException (NPE) が発生した場合はback.H_NAME.equals(xxx)、おそらくbacknull または nullのいずれかを意味しback.H_NAMEます。

を印刷するとnullになると言うので、実際にはnullback.H_NAMEであることを示唆しています。back.H_NAMEあなたは class を説明するコードを私たちに示していないBackgroundので、これ以上助けを与えることは困難です.

于 2010-03-20T03:25:19.380 に答える