我想为hang子手游戏做一个高分。所以我需要保存它,所以它不会重新启动,每次开始游戏或返回到菜单..所以我有一个playstate记录在游戏结束时的胜利和损失,如果用户离开之前解决它增加了损失。我发现一个教程,通过SavaData文件保存..问题是它保存一个空文件没有什么在那里,但有2个空行..所以我得到一个numberformatexception空..我以前的工作,但它仍然不会阅读该行,并会返回一个错误numberformatexception Integer.parseInt ..我知道问题是在阅读线,现在我不知道什么地方出错请帮助我..最新错误的代码??感谢名单储蓄游戏得分
这是保存代码...
private void createSaveData() {
File file = new File(saveDataPath, filename);
try {
FileWriter output = new FileWriter(file);
BufferedWriter writer = new BufferedWriter(output);
writer.write("" + 0);
writer.newLine();
writer.write("" + 0);
} catch (Exception e) {
e.printStackTrace();
}
}
private void setScores() {
FileWriter output = null;
try {
File F = new File(saveDataPath, filename);
output = new FileWriter(F);
BufferedWriter writer = new BufferedWriter(output);
writer.write(wins);
writer.newLine();
writer.write(losses);
writer.close();
}catch (Exception e){
e.printStackTrace();
}
}
private void loadScores() {
try {
File F = new File(saveDataPath, filename);
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(F)));
String line = reader.readLine();
line = reader.readLine();
wins = Integer.parseInt(line);
line = reader.readLine();
losses = Integer.parseInt(line);
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
我再加入loadScore();在playstate的乞讨...和setScore();在赢得++或亏损后++ ..
我有另一个高级的状态,调用playstate并获取作为一个整数的胜利和lossess,并且没有任何问题,因此它绘制0,0。
在我的渲染方法,我有这个,如果尝试是太大,或者如果正确答案猜测...
if (tries == 6) {
currentWord = ranWord;
execcurrentframe.setRegion(eman.ExecLoss.getKeyFrame(elapsedTime, false));
hangcurrentframe.setRegion(hman.hangdead.getKeyFrame(elapsedTime, false));
Wordsfont.draw(batch, "Game Over", eman.getPosition().x + 60, hman.getPosition().y + 70);
batch.draw(fu, 160, 510);
if (leverpressed == false){
bksound.stop();
lever.play();
leverpressed = true;
}
if (lossrecorded == false) {
losses += 1;
System.out.print("Losses = " + losses);
setScores();
lossrecorded = true;
}
}
else if (CorrectAnswer == true) {
hangcurrentframe.setRegion(hman.hangwin.getKeyFrame(elapsedTime, false));
Wordsfont.draw(batch, "You Won", eman.getPosition().x + 60, hman.getPosition().y + 70);
if (winrecorded == false) {
bksound.stop();
victory.play();
wins += 1;
System.out.print("Wins = " + wins);
setScores();
winrecorded = true;
}
}
一个评论,一定要关闭'createSaveData()'中的作者。您还应该将所有'.close()'方法调用放在finally块中,或者使用Java 7的try-with-resources方法。 – KevinO
我注意到,即使在教程中他也没有添加..仍然没有帮助只改变了错误.lang.NumberFormatException:对于输入字符串:“”+加上阅读问题.. java.lang.Integer.parseInt(Integer .java:481) – Joe
(1)您是否同时使用'createSaveData'和'setScores'? “胜利”和“损失”是什么类型? – RealSkeptic