我写了这段代码,这显然是正确的。问题是变量temp始终为空。在第一个循环中,程序应该进入第二个语句,但这不会发生。为什么?
ArrayList<Pair<Float, Float>> tmp = new ArrayList<>();
for (int i=0; (line = reader.readLine()) != null; i++) {
Float temp = null;
if (line.equals("----")) {
i = 0;
points.add(tmp);
tmp = new ArrayList<>();
} else if (i%2 == 0) {
temp = Float.parseFloat(line);
} else {
tmp.add(new Pair<Float, Float>(temp, Float.parseFloat(line)));
System.out.println("LINE: "+tmp.get(0).first);
}
}
PS:即使是IDE也说值temp将始终为空
您在for
循环中声明Float temp = null;
。因此,它将始终设置为null
循环的迭代开始时。即使您点击了第二条语句,temp
也会得到一个值,但随后立即被丢弃并使用值null
重新创建。
尝试在循环之前声明Float temp = null
。
值为temp 并不总是为空。如果您在解析 temp 后立即打印它的值,您将看到此值。
temp = Float.parseFloat(line);
System.out.println("temp: " + temp);
如果您打算在下一次迭代中使用一次迭代中的 temp 值,明智的做法是不要每次都将变量设置为 null。