好的,所以我正在制作一个学校项目的游戏,以及要求和所做的一切,但我试图通过添加一个高分系统来增加更多。这个游戏有很多困难,我试图为每个游戏制作一个独立的高分,所以这样,例如,如果你轻松获得10分的高分,那么去玩中等游戏,你的高分不是& #39; t 10.当所有困难中只有一个得分时我得分很高,但现在当我尝试独立完成时,我无法让它工作。以下是一些代码(我显然不会发布所有代码。如果除了我提供的内容之外还需要任何其他代码,请告诉我。
所以,这里是从文本文件获得高分的代码,如果文件还没有创建,那么它就会创建,然后填写必要的信息到将当前的高分设置为零。
注意:我不相信这是问题,因为这部分做了它应该做的事。
boolean fileLoop = true;
while(fileLoop) {
try {
scan = new Scanner(new FileReader(highScores));
scan.useLocale(Locale.US);
//System.out.println(scan.next());
while(scan.hasNext()) {
//System.out.println("loop is working");
if(easy) {
if(scan.next().toLowerCase().equals(qm + "easy" + qm)) {
if(scan.hasNextDouble()) {
highestScore = scan.nextDouble();
System.out.println(highestScore);
//System.out.println("easy score worked");
}
}
}
else if(medium) {
if(scan.next().toLowerCase().equals(qm + "medium" + qm)) {
highestScore = scan.nextDouble();
//System.out.println("medium score worked");
}
}
else if(hard) {
if(scan.next().toLowerCase().equals(qm + "hard" + qm)) {
highestScore = scan.nextDouble();
//System.out.println("hard score worked");
}
}
else if(extreme) {
if(scan.next().toLowerCase().equals(qm + "extreme" + qm)) {
highestScore = scan.nextDouble();
//System.out.println("extreme score worked");
}
}
}
fileLoop = false;
}
catch(FileNotFoundException e) {
highScores = new File("highScores.txt");
try {
writer = new BufferedWriter(new FileWriter(highScores));
writer.write(qm + "Easy" + qm + " " + "0.0");
writer.write("\n" + qm + "Medium" + qm + " " + "0.0");
writer.write("\n" + qm + "Hard" + qm + " " + "0.0");
writer.write("\n" + qm + "Extreme" + qm + " " + "0.0");
}
catch (Exception f) {
}
finally {
try {
writer.close();
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
这是代码问题。当我测试它时,它说scan.hasNext()
是假的。
if(scoreCounter > highestScore) {
System.out.println("IF WORKED");
try {
scan = new Scanner(new FileReader(highScores));
writer = new BufferedWriter(new FileWriter(highScores));
while(scan.hasNext()) {
System.out.println("WHile works");
if(easy) {
System.out.println("if worked");
if(scan.next().toLowerCase().equals(qm + "easy" + qm)) {
writer.write(qm + "Easy" + qm + " " + String.valueOf(scoreCounter));
System.out.println("easy score worked");
}
}
}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
try{
writer.close();
}
catch (Exception e) {
}
}
}
现在,如果我弄错了,请纠正我,但我认为正在执行scan = new Scanner(new FileReader(highScores));
重置扫描仪,以便它再次从顶部开始。此外,当我保持原样时,它会完全删除测试文件中的所有内容。
提前感谢您提供任何帮助
答案 0 :(得分:0)
您无法打开文件以便使用一台扫描仪进行读取,也无法同时使用BufferedWriter进行写入。作者破坏了文件内容。