Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这只是一个打字错误吗?_Java_Android - Fatal编程技术网

Java 这只是一个打字错误吗?

Java 这只是一个打字错误吗?,java,android,Java,Android,我一直在读《Android游戏入门》一书,我遇到了以下代码和文本: public static void load(FileIO files) { BufferedReader in = null; try { in = new BufferedReader(new InputStreamReader( files.readFile(".mrnom"))); soundEnabled = Boolean.parseBoolean( in .

我一直在读《Android游戏入门》一书,我遇到了以下代码和文本:

public static void load(FileIO files) {
    BufferedReader in = null;
    try { in = new BufferedReader(new InputStreamReader(
            files.readFile(".mrnom")));
        soundEnabled = Boolean.parseBoolean( in .readLine());
        for (int i = 0; i < 5; i++) {
            highscores[i] = Integer.parseInt( in .readLine());
        }
    } catch (IOException e) {
        // :( It's ok we have defaults
    } catch (NumberFormatException e) {
        // :/ It's ok, defaults save our day
    } finally {
        try {
            if ( in != null)
                in .close();
        } catch (IOException e) {}
    }
}
接下来是一个名为save的方法。它接受当前设置并将其序列化为 外部存储器上的.mrnom文件,例如/sdcard/.mrnom。声音设置和每个 高分条目存储为该文件中的一个单独的行,正如加载所期望的那样 方法如果出现问题,我们只需忽略故障并使用默认值 之前定义的。在AAA标题中,您可能希望通知用户此加载 错误

我很困惑,因为它说它在save方法中写入新行,所以在load方法中,使用readLine可以正常工作。但是,它们仅使用不带/n字符的write。这将如何工作?它只是一个打字错误吗?

不,它不是一个打字错误。 BufferedReader从字符输入流中读取文本,对字符进行缓冲,以便有效读取字符、数组和行。然后,它使用common System.lineSeparator作为分隔符来分割文本值。
请自己检查分隔符。

分隔符是回车符,对吗?当调用writestring时,根据我的判断,没有空格。我在eclipse中尝试了这段代码,并查看了文件中的所有内容。我稍微修改了一下代码System.out.println的布尔值在保存后不起作用,可能是因为它的值为true,旁边写的数字为true123。write方法似乎不是用空格或returns来编写文本。实际上,您必须修改write方法,以使BufferedReader能够理解一段属性何时结束。因此,只需在每个值附近添加System.lineSeparator。这是否意味着当前代码输入错误?当前代码输入错误,第一句话不是输入错误。BufferedReader需要分隔符。嗯,好的。我觉得奇怪的是,这段代码竟然能在这本书中找到它的踪迹。它甚至在更新的版本中。
public static void save(FileIO files) {
    BufferedWriter out = null;
    try {
        out = new BufferedWriter(new OutputStreamWriter(
            files.writeFile(".mrnom")));
        out.write(Boolean.toString(soundEnabled));
        for (int i = 0; i < 5; i++) {
            out.write(Integer.toString(highscores[i]));
        }
    } catch (IOException e) {} finally {
        try {
            if (out != null)
                out.close();
        } catch (IOException e) {}
    }
}