Android 字节与整数进行比较

Android 字节与整数进行比较,android,integer,compare,byte,Android,Integer,Compare,Byte,我试图将保存在文件中的高分与整数进行比较。所以我总是会从我的文件中提取三个字符,但如果我控制它,它不会将我的新分数放入其中 try{ String FILENAME = "HanoiScore1File"; FileInputStream fos = openFileInput(FILENAME); byte[] b = new byte[2]; fos.read(b)

我试图将保存在文件中的高分与整数进行比较。所以我总是会从我的文件中提取三个字符,但如果我控制它,它不会将我的新分数放入其中

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

如果您真的想将分数存储为两个字节以节省空间,则需要结合使用位移位和按位运算符,如:

    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();
这是可行的,但我犯的错误是

if (Score2>Score)

Score2总是0,它永远不会大于Score,因此它没有保存高分。

代码
byte[]b=新字节[2];fos.read(b)只从文件中读取2个字节,而不是在您写问题时读取3个字节。另外,文件的当前内容是什么?你比较它的“高分”是多少?这只是一个类型错误,因为在另一个文件中它有3个字节。我与之比较的高分是score,Score2中的高分来自文件“HanoiScore1File”文件的当前内容是什么?你能把它寄出去吗?另外,只需添加一些调试日志,以便在比较“Score2”和“Score”之前查看它们的值。问题解决了,这是答案和我自己的愚蠢错误的组合。我发布了一个关于它的答案,我尝试了第二种方法,因为我不担心空间问题。第一次得分是0,但一直是0,永远不会改变。
if (Score2>Score)