在我目前正在进行的游戏中,我希望这样做,以便当你开始游戏时,你获得了之前的分数。我已经使用此代码为乐谱制作了一个保存文件。
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"
答案 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);