Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按JButton时将文件中的数字设置为0_Java_Swing_Nullpointerexception_Jbutton_Fileoutputstream - Fatal编程技术网

Java 按JButton时将文件中的数字设置为0

Java 按JButton时将文件中的数字设置为0,java,swing,nullpointerexception,jbutton,fileoutputstream,Java,Swing,Nullpointerexception,Jbutton,Fileoutputstream,在我的游戏的开始菜单中,我不想让它成为这样,当你按下“继续”按钮时,你会得到你上次玩的分数。我已经修复了保存分数的代码和加载分数的代码,因此“继续”按钮没有任何问题 但是对于“新游戏”按钮,我遇到了一些困难。当按下该按钮时,我需要重置存储分数的文件(将其中的数字设置为0,而不是上一个分数)。我曾尝试在按钮的ActionListener中包含此代码,但它没有将.dat文件中的文本设置为0,而是在末尾添加了一个0 try{ String zero = "0";

在我的游戏的开始菜单中,我不想让它成为这样,当你按下“继续”按钮时,你会得到你上次玩的分数。我已经修复了保存分数的代码和加载分数的代码,因此“继续”按钮没有任何问题

但是对于“新游戏”按钮,我遇到了一些困难。当按下该按钮时,我需要重置存储分数的文件(将其中的数字设置为0,而不是上一个分数)。我曾尝试在按钮的
ActionListener
中包含此代码,但它没有将.dat文件中的文本设置为0,而是在末尾添加了一个0

    try{
        String zero = "0";
        byte[] reset = zero.getBytes();
        player.getFile().write(reset);
    }catch (IOException ex){

    }
我还尝试了
player.setScore(“0”)我使用它在每次敌人死亡时增加10分,但它仍然会从.dat文件中获得分数

这是player类中处理文件加载和保存的两个方法

    public void save(){
        try{
            getScore = new File("Score.dat");
            scoreFile = new FileOutputStream(getScore);
            byte[] saveScore = score.getBytes();
            scoreFile.write(saveScore);
        }catch(FileNotFoundException ex){

        }catch(IOException ex){

        }
    }

    public void load(){
        try{
            br = new BufferedReader(new FileReader("Score.dat"));
            score = br.readLine();
        }catch (FileNotFoundException ex){

        }catch(IOException ex){

        }
    }

如果我按下“继续”按钮,而不是“新游戏”按钮,而是我得到一个
java.lang.NullPointerException
错误,我也尝试只运行
load()
方法。

您的代码隐藏了所有相关的异常,这将使我们很难弄清楚到底发生了什么——比如
ex.printStackTrace(),以便查看是否引发异常。我可以想象,在您的情况下,字节没有被写入,因为您没有关闭或刷新流

无论如何,您可能希望在文件中使用类似a的内容,而不是写入原始字节:

PrintWriter writer = new PrintWriter(new File("file.txt"));
writer.println("0");
writer.close();

如果
getFile()
返回一个
FileWriter
,那么您可能每次都必须关闭并重新打开该文件,并使用允许您指示不希望它附加额外数据的命令。

使用
PrintWriter
不会阻止它每次附加数据,会吗?@RobI it will-默认情况下,PrintWriter将覆盖文件,而不是附加到文件中。