加载游戏的得分

时间:2013-05-01 12:06:40

标签: java file save bufferedreader filereader

在我目前正在进行的游戏中,我希望这样做,以便当你开始游戏时,你获得了之前的分数。我已经使用此代码为乐谱制作了一个保存文件。

                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"

1 个答案:

答案 0 :(得分:1)

如果执行br.toString(),它会从BufferedReader对象上的类对象调用toString()方法。因此它打印了缓冲对象的内存地址:

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

这就是为什么你得到NumberFormatException,因为你无法将String分配给score(我认为它是int变量。)

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

 String line = br.readLine();
    int value = Integer.parseInt(line);