0

Aファイルに保存したハイスコアを整数と比較しようとしています。そのため、ファイルから常に3つの文字を取得しますが、それを制御しても、新しいスコアは含まれません。

try{
                String FILENAME = "HanoiScore1File";
                FileInputStream fos = openFileInput(FILENAME);
                byte[] b = new byte[2];
                fos.read(b);
                fos.close();
                Data = new String(b);
                Score2 = Integer.parseInt(Data);
            }catch (java.io.FileNotFoundException e) {
              } catch (IOException e) {
                e.printStackTrace();
            }
            if(Score2>Score){
                try{
                    String FILENAME="HanoiScore1File";
                    Data=Integer.toString(Score);
                    FileOutputStream fostemp = openFileOutput(FILENAME, Context.MODE_PRIVATE);
                    fostemp.write(Data.getBytes());
                    fostemp.close();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
4

2 に答える 2

0

スペースを節約するためにスコアを2バイトとして格納することに本当に関心がある場合は、次のようなビットシフト演算子とビット演算子を組み合わせて使用​​する必要があります。

    int score = 2839;
    byte a = (byte)(score & 255);
    byte b = (byte)(score >> 2);

ただし、宇宙に少し寛容な場合は、次のような簡単なことを行うことができます。

    String FILENAME = "HanoiScore1File";

    //Read the score
    Scanner scanner = new Scanner(new File(FILENAME));
    int Score = scanner.nextInt();
    scanner.close();

    //Write the score
    PrintWriter printWriter = new PrintWriter(new File(FILENAME));
    printWriter.println(Score);
    printWriter.close();
于 2012-05-08T15:16:26.337 に答える
0
String FILENAME = "HanoiScore1File";

//Read the score
Scanner scanner = new Scanner(new File(FILENAME));
int Score = scanner.nextInt();
scanner.close();

//Write the score
PrintWriter printWriter = new PrintWriter(new File(FILENAME));
printWriter.println(Score);
printWriter.close();

これは機能しますが、私が犯した間違いは

if (Score2>Score)

スコア2は常に0であり、スコアより大きくなることはないため、ハイスコアは保存されませんでした。

于 2012-05-09T15:00:18.593 に答える