【问题标题】:How do I save a float to a file using android java?如何使用 android java 将浮点数保存到文件中?
【发布时间】:2015-09-06 12:39:27
【问题描述】:

我有一个简单的游戏,我需要将高分(浮点数)存储到文件中,然后在用户下次使用应用程序时读取它。我希望将其保存在设备上,但是,我没有办法做到这一点。如何将设备上的数据保存到选定的位置?

【问题讨论】:

  • 不到 10 秒就被否决了?
  • 我不是反对者,但我明白为什么。永远不要在问题中说“我是菜鸟”或“对不起我的英语”之类的东西。它不添加任何信息
  • 我用最少的相关信息(我认为)编辑了您的问题
  • 好的,谢谢你的信息。
  • 您可以在谷歌上搜索save a file android java 并获得您可能需要的一切。您之所以被否决,是因为您自己付出了 0 的努力来解决这个问题。

标签: java android libgdx aide-ide


【解决方案1】:

您可以使用内部存储。这将创建可以写入和读取的文件。最好的方法是创建一个单独的类来处理文件。这里有两种读取和写入高分的方法。

要设置最高分,请使用 setHighScore(float f)

public void setHighScore(float highscore){
    FileOutputStream outputStream = null;
    try {
        outputStream = (this).openFileOutput("highscore", Context.MODE_PRIVATE);

        outputStream.write(Float.toString(f)).getBytes());
        outputStream.close();

    } catch (Exception e) {e.printStackTrace();}
}

要获得最高分,请使用 getHighScore()

public float getHighScore(){
    ArrayList<String> text = new ArrayList<String>();

    FileInputStream inputStream;
    try {
        inputStream = (this).openFileInput("highscore");

        InputStreamReader isr = new InputStreamReader(inputStream);
        BufferedReader bufferedReader = new BufferedReader(isr);

        String line;
        while ((line = bufferedReader.readLine()) != null) {
            text.add(line);
        }
        bufferedReader.close();
    } catch (Exception e) { e.printStackTrace();}
return Float.parseFloat(text.get(1));
}

【讨论】:

  • 在我的 Files 类中出现错误:“未知方法 isEmpty of 'java.lang.string[]'”
  • 我仍然收到错误消息。看我放的图片,显示错误i.stack.imgur.com/mEubi.png
  • @TastyTable 我完全改变了答案。将这两个方法放在您的 Activity 类中。
  • 感谢您的帮助,但我收到另一个错误:'Unknown method "openFileOutput"' :(
  • @TastyTable 你在活动中这样做,对吗?您似乎在获取活动的上下文时遇到了问题。你能发布你的完整代码吗?
【解决方案2】:

使用文件处理 - 我建议通过使用文件处理技术来进行基本操作。使用 java 的 InputStream 和 OutputStream 类自动创建一个文本文件。然后在其中添加浮动。正如上面的 cmets 所建议的那样。

使用属性文件 - 请参考此代码 - http://www.mkyong.com/java/java-properties-file-examples/

使用数据库 - 您可以继续使用一个数据库,该数据库将安全地存储分数并确保没有人轻易篡改它。教程 - http://www.tutorialspoint.com/jdbc/

【讨论】:

    【解决方案3】:

    用很少的几行尝试简单。

    public void saveHighScore(File file, float highScore){
    try{
    Formatter out = new Formatter(file);
    out.format("%f", highScore);
    out.close();
    }catch(IOException ioe){}
    }
    

    【讨论】:

      猜你喜欢
      • 2013-11-26
      • 2012-07-24
      • 1970-01-01
      • 2021-01-21
      • 2015-04-07
      • 1970-01-01
      • 2014-05-11
      • 2012-08-08
      • 2013-04-03
      相关资源
      最近更新 更多