C# NullPointerException:两个集合和一个for循环
在另一种方法Algou_1中,我搜索元素,并检查H_NAME的值是否等于在main中输入的值。当我试图运行代码时,我得到一个空指针异常。在尝试使用System.out.println等打印代码段中每个for循环后的H_NAME值时,我还得到一条返回给我的null语句 我相当肯定,收集的数据并没有存储扫描仪收集的数据。但当我用大小检查集合大小时,它大约是正确的大小 主要问题是: readBackground方法中的data.add是否位于错误的位置? 这段代码是否只是结构错误? 当我使用System.out.println检查背景对象值name、start time、increment等时,它们可以很好地打印出来C# NullPointerException:两个集合和一个for循环,c#,for-loop,collections,nullpointerexception,nested-loops,C#,For Loop,Collections,Nullpointerexception,Nested Loops,在另一种方法Algou_1中,我搜索元素,并检查H_NAME的值是否等于在main中输入的值。当我试图运行代码时,我得到一个空指针异常。在尝试使用System.out.println等打印代码段中每个for循环后的H_NAME值时,我还得到一条返回给我的null语句 我相当肯定,收集的数据并没有存储扫描仪收集的数据。但当我用大小检查集合大小时,它大约是正确的大小 主要问题是: readBackground方法中的data.add是否位于错误的位置? 这段代码是否只是结构错误? 当我使用Syste
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;
}
如果在调用back.H_NAME.equalsxxx时得到NullPointerException NPE,则可能意味着back为null或back.H_NAME为null
你说当你打印back.H_NAME时,你会得到null,这表明back.H_NAME实际上是null。您没有向我们展示任何描述类背景的代码,因此很难再为您提供任何帮助。对于初学者,您可能希望尝试格式化代码,使其更具可读性。你也可以考虑让我们看看剩下的,因为肯定有一些东西丢失了。真的,我想我可能错过了什么。这是背景代码。谢谢公共类背景{String H_NAME;double T_START;double DT;double PBMEAN;公共背景字符串NAME,double starttime,double increment,double PBMEAN{NAME=H_NAME;starttime=T_START;increment=DT;PBMEAN=PBMEAN;}是的,我想当我找到检查H_NAME变量的方法时,它肯定是空的,我只是不知道为什么。因为如果我打印出创建数据的方法的步骤,肯定会被读取。。。