0

在我目前正在制作的游戏中,我希望在开始游戏时获得退出前的分数。我已经用这段代码为乐谱制作了一个保存文件。

                try{
                    File getScore = new File("Score.dat");
                    FileOutputStream scoreFile = new FileOutputStream(getScore);
                    byte[] saveScore = score.getBytes();
                    scoreFile.write(saveScore);
                }catch(FileNotFoundException ex){

                }catch(IOException ex){

                }

分数显示为字符串,因此在开始游戏时必须将 .dat 文件中的分数作为字符串获取,以便我可以将分数字符串与开始时生成的字符串相等。我尝试使用下面显示的代码。

        try{
            BufferedReader br = new BufferedReader(new FileReader("Score.dat"));
            score = br.toString();
        }catch (FileNotFoundException ex){

        }

但是当我使用该代码时,我会收到此错误消息。

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "java.io.BufferedReader@313159f1"
4

1 回答 1

1

如果这样做,它会从 BufferedReader 对象上的类对象br.toString()调用该方法。toString()所以它打印缓冲对象的内存地址:

public String toString() {
           return getClass().getName() + "@" + Integer.toHexString(hashCode());
 } 

这就是你得到 a 的原因,NumberFormatException因为你不能将 a 分配Stringscore(我想这是一个int变量)。

此外,您绝对不会寻找它,因为您希望将文本存储在文件中。如果你想从缓冲区中读取一行,你只需要这样做:

 String line = br.readLine();
    int value = Integer.parseInt(line);
于 2013-05-01T12:10:20.943 回答