我想爲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