Java 平均值返回无穷大

标签 java android arrays

我的程序使用写入来保存 double (Ratingbar.Rating),并使用读取将保存的文件放入数组中。然后,对于数组,我对数组内的数字求平均值。在读取代码中,当我 getResources("raw.file") 工作正常并且返回正确时,但现在我需要写入数字,为此我无法使用 res 文件夹,所以现在我使用内部存储,我的平均返回给我无限。平均值在按钮 OnClickListener 中调用。 我将发布代码:

private void writeMyArray(double rate){
    //PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("arraymedia.txt", true)));
    //.println(rate);
    double ratex2 = rate * 2;
    int erate = (int)ratex2;
        try{
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput("myarray.txt", Context.MODE_APPEND));
            outputStreamWriter.append(Integer.toString(erate));
            outputStreamWriter.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
}

阅读

private void readMyArray(ArrayList<Double>array){
    String ret = "";
    try {
        InputStream inputStream = openFileInput("myarray.txt");

        if (inputStream != null) {
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String receiveString = "";
            StringBuilder stringBuilder = new StringBuilder();
            int enc = 0;
            while ((receiveString = bufferedReader.readLine()) != null) {
                stringBuilder.append(receiveString);
                array.add(enc, Double.parseDouble(receiveString));
                ++enc;
            }
            inputStream.close();
        }
    } catch (FileNotFoundException e) {
            e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

平均

private double media(ArrayList<Double>array)
{
    double total = 0;
    double media;
    int a = 1;
    for (int i=0; i<array.size(); i++)
    {
        total = total + array.get(i);
        a=i;
    }
    media = total / a;
    return media;
}

按钮

button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            rating = ratingbar.getRating();

           writeMyArray(rating);
            readMyArray(arraydays);
            button.setText(getText(R.string.obrigado) + "!" + media(arraydays));
            //button.setText(getText(R.string.obrigado)+"!");
            ratingbar.setEnabled(false);
            button.setEnabled(false);
        }
    });

最佳答案

如果分母是 0.0(浮点型或 double 型中的 0),则除法在 Java 中等于无穷大。分割前请检查。

关于Java 平均值返回无穷大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31205695/

相关文章:

java - 如何在Jshell中导入另一个脚本文件

java - Murmur3 散列 Python 和 Java 实现之间的不同结果

php - 将 Android 设备连接到 Apache 服务器

java - 在 Android 中实例化 172820 字符串数组的最佳方法是什么?

php - 如果数组键值为空,如何自动生成数组键值(来自查询)

c++ - 如何将数字放入某些组?

java - SWT:拖放内部对象

java - 在多个线程中使用相同的 OpenGL 上下文

java - 在Java中创建新的Date对象时自动更改时区

java - 将 JUnit 结果打印到文件