Java - 尝试重新启动扫描程序

时间:2015-11-22 02:01:13

标签: java java.util.scanner

好的,所以我正在制作一个学校项目的游戏,以及要求和所做的一切,但我试图通过添加一个高分系统来增加更多。这个游戏有很多困难,我试图为每个游戏制作一个独立的高分,所以这样,例如,如果你轻松获得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));重置扫描仪,以便它再次从顶部开始。此外,当我保持原样时,它会完全删除测试文件中的所有内容。

提前感谢您提供任何帮助

1 个答案:

答案 0 :(得分:0)

您无法打开文件以便使用一台扫描仪进行读取,也无法同时使用BufferedWriter进行写入。作者破坏了文件内容。