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)