-3

我正在尝试使用 Toast 显示 3 个 ratingBars 的平均值,但它始终显示 0.0。我还尝试将平均值转换为字符串,但没有运气。请帮忙。这是我的代码:

float rating1 = ratingBar.getRating();
float rating2 = ratingBar2.getRating();
float rating3 = ratingBar3.getRating();
float average = (rating1+rating2+rating3) / 3;

final String formatFloat = Float.toString(average);

Button button1 = (Button) rootView.findViewById(R.id.button1);
button1.setOnClickListener(new android.view.View.OnClickListener() {
    public void onClick(View v) {
    // Implement your logic here

    Toast.makeText(PlaceholderFragment.this.getActivity(),formatFloat, 
                        Toast.LENGTH_SHORT).show();             
    }
});
4

4 回答 4

1

看起来你正在失去精确度。尝试这个:

float average = (rating1+rating2+rating3) / (float)3;
于 2014-06-02T04:38:14.507 回答
1

按钮代码将一直执行,直到用户单击该按钮,之前的所有代码都将在按钮设置之前执行。评分栏何时更改?设置按钮之后还是之前?我会做

Button button = (Button) rootView.findViewById(R.id.button1);
button.setOnClickListener(new android.view.View.OnClickListener() {
  public void onClick(View v) {
    float rating1 = ratingBar1.getRating();
    float rating2 = ratingBar2.getRating();
    float rating3 = ratingBar3.getRating();
    float average = (rating1 + rating2 + rating3) / 3.0f;
    String formatFloat = Float.toString(average);
    Toast.makeText(PlaceholderFragment.this.getActivity(),formatFloat,
                   Toast.LENGTH_SHORT).show();
  }
}

为了确保用户点击按钮时评分是最新的值,否则,如您的代码,如果在用户更改评分栏之前执行代码,评分1,评分2和评分3可能都是0。

于 2014-06-02T04:50:41.493 回答
0

我通过输入硬代码值来尝试此代码,它运行良好

    float rating1 = 13.4f;
    float rating2 = 12.6f;
    float rating3 = 19.5f;
    float average = (float) ((rating1 + rating2 + rating3) / 3);

    final String formatFloat = Float.toString(average);

    Log.i("mini", "Rating:"+formatFloat);

尝试这个!!!

于 2014-06-02T04:52:39.447 回答
0

setOnClickListener您可以在和检查中添加评分的计算部分吗?如下所示。

Button button1 = (Button) rootView.findViewById(R.id.button1);
button1.setOnClickListener(new android.view.View.OnClickListener() {
    public void onClick(View v) {
    // Implement your logic here

float rating1 = ratingBar.getRating();
float rating2 = ratingBar2.getRating();
float rating3 = ratingBar3.getRating();
float average = (float)((rating1+rating2+rating3) / 3);

    Toast.makeText(getApplicationContext(),average + "", 
                        Toast.LENGTH_SHORT).show();             
    }
});
于 2014-06-02T04:57:57.367 回答