Java缓冲写入程序不会写入所有数据 publicstaticvoidsave() { BufferedWriter out=null; 尝试 { out=new BufferedWriter(new OutputStreamWriter(Gdx.files.external(file.write)(false)); out.write(Double.toString(FinanceSystem.currentPlayerCash)); 输出。写入(“\n”); out.write(Integer.toString(DateSystem.day)); 输出。写入(“\n”); out.write(Integer.toString(DateSystem.month)); 输出。写入(“\n”); out.write(Integer.toString(DateSystem.year)); 输出。写入(“\n”); 对于(int i=0;i

Java缓冲写入程序不会写入所有数据 publicstaticvoidsave() { BufferedWriter out=null; 尝试 { out=new BufferedWriter(new OutputStreamWriter(Gdx.files.external(file.write)(false)); out.write(Double.toString(FinanceSystem.currentPlayerCash)); 输出。写入(“\n”); out.write(Integer.toString(DateSystem.day)); 输出。写入(“\n”); out.write(Integer.toString(DateSystem.month)); 输出。写入(“\n”); out.write(Integer.toString(DateSystem.year)); 输出。写入(“\n”); 对于(int i=0;i,java,for-loop,bufferedwriter,Java,For Loop,Bufferedwriter,这就是问题所在: public static void save() { BufferedWriter out = null; try { out = new BufferedWriter(new OutputStreamWriter(Gdx.files.external(file).write(false))); out.write(Double.toString(FinanceSystem.currentPlayerCash));

这就是问题所在:

public static void save() 
{
    BufferedWriter out = null;
    try 
    {
        out = new BufferedWriter(new OutputStreamWriter(Gdx.files.external(file).write(false)));
        out.write(Double.toString(FinanceSystem.currentPlayerCash));
        out.write("\n");
        out.write(Integer.toString(DateSystem.day));
        out.write("\n");
        out.write(Integer.toString(DateSystem.month));
        out.write("\n");
        out.write(Integer.toString(DateSystem.year));
        out.write("\n");
        for(int i = 0; i <= InventorySystem.drugsOwned.size(); i++)
            out.write(Integer.toString(InventorySystem.drugsOwned.get(i))+"\n");
        for(int i = 0; i <= AttributeSystem.attributeNames.length; i++)
            out.write(Integer.toString(AttributeSystem.attributeValues.get(i)) + "\n");



    } 
    catch (Throwable e) {} 
    finally 
    {
       try
       {
          if (out != null)
               out.close();
       } 
       catch (IOException e) {}
    }
在诊断方面,你完全是在自我欺骗:

  • 除非你真的能处理一个异常,否则不要捕捉它——或者捕捉它,然后在日志记录后重新播放它(或者其他什么)
  • 尽可能捕捉特定的异常。(捕捉
    异常
    不好;捕捉
    可丢弃的
    更糟。)
  • 甚至不记录日志就默默地捕捉是一个糟糕的想法。这意味着你不知道你有多少次遇到问题,或者问题是什么
(此外,代码表明您要么过度使用静态变量,要么需要整理命名约定。但这是另一回事。)

这就是问题所在:

public static void save() 
{
    BufferedWriter out = null;
    try 
    {
        out = new BufferedWriter(new OutputStreamWriter(Gdx.files.external(file).write(false)));
        out.write(Double.toString(FinanceSystem.currentPlayerCash));
        out.write("\n");
        out.write(Integer.toString(DateSystem.day));
        out.write("\n");
        out.write(Integer.toString(DateSystem.month));
        out.write("\n");
        out.write(Integer.toString(DateSystem.year));
        out.write("\n");
        for(int i = 0; i <= InventorySystem.drugsOwned.size(); i++)
            out.write(Integer.toString(InventorySystem.drugsOwned.get(i))+"\n");
        for(int i = 0; i <= AttributeSystem.attributeNames.length; i++)
            out.write(Integer.toString(AttributeSystem.attributeValues.get(i)) + "\n");



    } 
    catch (Throwable e) {} 
    finally 
    {
       try
       {
          if (out != null)
               out.close();
       } 
       catch (IOException e) {}
    }
在诊断方面,你完全是在自我欺骗:

  • 除非你真的能处理一个异常,否则不要捕捉它——或者捕捉它,然后在日志记录后重新播放它(或者其他什么)
  • 尽可能捕捉特定的异常。(捕捉
    异常
    不好;捕捉
    可丢弃的
    更糟。)
  • 甚至不记录日志就默默地捕捉是一个糟糕的想法。这意味着你不知道你有多少次遇到问题,或者问题是什么

(此外,代码表明您要么过度使用静态变量,要么需要整理命名约定。但这是另一回事。)

可能是它引发了一个异常,而你却完全忽略了它,好像它没有发生一样?不要这样做……你应该在异常块中添加一些日志记录。可能在编写属性之前/期间引发了一些异常。空的catch块!所有谜团之母!可能是它引发了一个异常,而你完全忽略了它好像它没有发生一样响?不要这样做…你应该在异常块中添加一些日志记录。可能在编写属性之前/期间引发了一些异常。空的catch块!所有谜团之母!“你完全是在欺骗自己”在金钱上是正确的。空的catch块几乎总是不正确的。谢谢你快速而有用的回答。老实说,我对try/catch块的工作原理只有一个模糊的概念,所以我会接受你的建议并重新修改它。我应该完全删除try/catch吗?@Jon。你能在第一个项目中修改语言吗。我想你是想说“不要抓住它-重新引用它”。否则,这是一个非常好的异常处理教程,共3行:)。还有静态变量yeh,我正在使用这些变量的加载,使用它们有什么问题?@andy07070:它们基本上是全局变量,导致对象定向性差、可测试性差、并发性噩梦等等你完全是在用水管冲洗自己“在钱上是对的。空的catch块几乎总是不正确的。谢谢你快速而有用的回答。老实说,我对try/catch块的工作原理只有一个模糊的概念,所以我会接受你的建议并重新修改它。我应该完全删除try/catch吗?@Jon。你能在第一个项目中修改语言吗?我想你是想说的“不要抓住它-重新引用它”。否则,这是一个非常好的异常处理教程,共3行:)。另外,对于静态变量yeh,我正在使用它们的加载,使用它们有什么问题?@andy07070:它们基本上是全局变量,导致对象定向性差、可测试性差、并发性噩梦等。。。
catch (Throwable e)
{
}