Java-尝试重新启动扫描仪

Java-尝试重新启动扫描仪,java,java.util.scanner,Java,Java.util.scanner,好的,我正在为一个学校项目做一个游戏,要求和所有的事情都完成了,但是我试图通过增加一个高分系统来增加更多。这场比赛有很多困难,我正试图为每一场比赛取得一个独立的高分,因此,例如,如果你在easy上获得10分的高分,那么就在Middle上进行比赛,你的高分不是10分。当所有的困难只有一个分数时,我的工作成绩很高,但现在当我试图独立完成它们时,我无法让它发挥作用。这里是一些代码(我显然不打算发布所有代码。如果您需要我提供的代码以外的任何其他代码,请让我知道 因此,下面是从文本文件中获取高分的代码,如

好的,我正在为一个学校项目做一个游戏,要求和所有的事情都完成了,但是我试图通过增加一个高分系统来增加更多。这场比赛有很多困难,我正试图为每一场比赛取得一个独立的高分,因此,例如,如果你在easy上获得10分的高分,那么就在Middle上进行比赛,你的高分不是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()
为false

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));
重置扫描仪,使其重新从顶部开始。此外,当我保持原样时,它会完全擦除测试文件中的所有内容


提前感谢您提供的任何帮助

您不能让一台扫描仪同时打开文件进行读取,也不能同时使用缓冲写入器进行写入。写入器会对文件内容进行重击。

好的,那么您建议我如何进行此操作?更正。是否有其他方法可以使用我现在的相同概念进行此操作。因为我确实知道如何进行此操作可以这样做,每一个困难都有一个变量,读取一次文件以存储所述变量中的值,然后在游戏结束后重写整个文件。但是有没有办法像我现在这样只使用一个变量?