2

ハイスコ​​アメカニズムが機能するゲームを作成しようとしていますが、java.io.BufferedWriter を使用してハイスコアファイルに書き込みます。ハイスコ​​アには暗号化がなく、レンダリングとユーザー入力には Slick2D と LWJGL を使用しています。プログラムは次のコードを実行します。

FileWriter fstream = new FileWriter("res/gabjaphou.txt");

BufferedWriter writer = new BufferedWriter(fstream);

writer.write(score); // score is an int value

writer.close(); // gotta save m'resources! lol

これによって生成されたテキスト ファイルを開くと、表示されるのはクエスチョン マークだけです。なぜこれが起こるのかわかりません。私が作成していた別のプロジェクトの他のコードを使用しましたが、問題はありませんでした...誰か理由を知っていますか? これは本当に迷惑です!:C

4

3 に答える 3

5

BufferedWriter.write(int)は、整数ではなく単一の文字を書き込むためのものです。

public void write(int c)
throws IOException

1 文字を書き込みます。

オーバーライド: クラス Writer に書き込む
パラメータ: c -int書き込む文字を指定する
スロー: IOException - I/O エラーが発生した場合

試す

writer.write(String.valueOf(score));  
于 2012-08-09T02:12:11.740 に答える
4

writer.write(String.valueOf(score));それ以外の場合score、文字として使用してください。ドキュメントを参照してください。

1 文字を書き込みます。書き込まれる文字は、指定された整数値の下位 16 ビットに含まれます。上位 16 ビットは無視されます。

使いたいのはWriter.write(String); またはを使用して変換scoreします。StringString.valueOfInteger.toString

writer.write(String.valueOf(score));
于 2012-08-09T02:11:58.760 に答える
0

BufferedWriter数値ではなく、一連のバイトをファイルに書き込もうとしています。数字はまだ文字です。

代わりに使用することを検討してくださいFileWriter。次のような単純なもの を使用してくださいfileWriter.write(Integer.toString(score)) 。Write はここで文字列を受け取りますが、出力は同じである必要があります。

于 2012-08-09T02:12:22.000 に答える