我的程序使用写入来保存 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/