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 を取得するのはそのためです(これは変数であると思います)。Stringscoreint

さらに、テキストをファイルに保存する必要があるため、それを探しているわけではありません。バッファから 1 行を読みたい場合は、次のようにするだけです。

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