2012-05-08 11 views
0

整数と比較するためにファイルに保存したハイスコアを比較しようとしています。だから私はいつも私のファイルから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(); 
       } 
      } 
+0

コード 'byte [] b = new byte [2]; fos.read(b); 'はファイルから2バイトしか読み込みません。質問に書いているときは3バイトではありません。また、ファイルの現在の内容は何ですか?あなたはそれを比較している「ハイスコア」とは何ですか? –

+0

これは、他のファイルの3バイトのため、Aタイプの間違いでした。私が比較した高い得点はScoreであり、Score2ではファイルの1つが返されます – stevedc

+0

ファイル "HanoiScore1File"の現在の内容は何ですか?あなたはそれを投稿できますか?また、デバッグログをいくつか追加して、比較する前に「Score2」と「Score」の値が何であるかを確認してください。 –

答えて

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(); 

この作品が、私が作った間違いはScore2

if (Score2>Score) 

だったそれは、ハイスコアを保存していないので、スコアよりも大きくなることはありませんこれは、常に0でした。

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(); 
+0

私はスペースの問題を心配しないので、2番目の方法を試しました。スコアでは最初にA 0になりますが、0にとどまり、変化しません。 – stevedc

関連する問題