我的阵列在哪里变化?

jus*_*ixx 0 java arrays file-io

这似乎是一个非常微不足道的问题,但我正在尝试将一个booleans 数组写入文件,然后将它们读回数组中.我可以验证文件是否正确创建:

true
false
true
false
false
false
Run Code Online (Sandbox Code Playgroud)

但是当我尝试回读它时,我最终得到一个完全充满假的数组.这是我的阅读代码:

    bools = new boolean[bools.length];

    try {    

        BufferedReader reader = new BufferedReader(new FileReader(file));

        String temp;
        int i = 0;
        while (null != (temp = reader.readLine())) {
            bools[i] = Boolean.parseBoolean(temp);

            // output what you read
            if (bools[i]) {
                System.out.println("true!");
            } else {
                System.out.println("false!");
            }
        }

        reader.close();

    } catch (FileNotFoundException ex) {
        Logger.getLogger(BooleanFiles.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(BooleanFiles.class.getName()).log(Level.SEVERE, null, ex);
    }

    // now output the resulting array
    for (int i = 0; i < bools.length; i++) {
        if (bools[i]) {
            System.out.println("true!");
        } else {
            System.out.println("false!");
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是我得到的输出:

true!
false!
true!
false!
false!
false!
false!
false!
false!
false!
false!
false!
Run Code Online (Sandbox Code Playgroud)

驱动我疯狂的部分是当我在读取时(在while循环中)检查它时正确设置数组,但是当我在结束时检查数组时(在for循环中)它是错误的.

知道bools是该类的属性也可能有所帮助

请原谅我的无礼.谢谢!

Pra*_*tik 6

while (null != (temp = reader.readLine())) {
            bools[i] = Boolean.parseBoolean(temp);

            // output what you read
            System.out.println(bools[i]);
            i++;
        }
Run Code Online (Sandbox Code Playgroud)

你把所有东西放在同一个地方.增加你的迭代器变量,它会起作用.