0

在另一种方法(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;  
            }
4

1 回答 1

0

如果您在调用时收到 NullPointerException (NPE) back.H_NAME.equals(xxx),这可能意味着back为 null 或back.H_NAME为 null。

你说当你 print 时back.H_NAME,你得到 null,这表明它back.H_NAME实际上是 null。您还没有向我们展示任何描述该类Background的代码,因此很难为您提供更多帮助。

于 2010-03-20T03:25:19.380 回答