首页 > 解决方案 > 值始终为空

问题描述

我写的这段代码显然是正确的。问题是变量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将始终为空

标签: javaarraylistnull

解决方案


Float temp = null;for循环中声明。因此,它将始终设置为null循环迭代开始的时间。即使您点击第二条语句,temp也会获得一个值,但随后会立即被丢弃并使用 value 重新创建null

尝试Float temp = null在循环之前声明。


推荐阅读