我的平均方法不断返回舍入的int值而不是double

时间:2016-09-06 05:10:30

标签: java

我正在编写一个程序来介绍Java类,我必须编写自己的方法,但它仍然作为一个舍入的int返回。因此平均74.6将返回74.0。这是方法。

static double average(ArrayList<Integer> user1){
  int sum = 0;
  double mean2 = 0.0;
  for(int i = 0; i < user1.size(); i++){
    sum = sum + user1.get(i);
  }
  mean2 = sum / user1.size();
  return mean2;
}

我知道问题出在第7行,但我不知道为什么。

4 个答案:

答案 0 :(得分:2)

您将整数除以整数,因为您要除以一个整数的ArrayList大小,从而产生一个整数。您需要做的是更改sum的数据类型或强制转换:

double sum = 0;

或者,

(double) sum / user1.size();

现在这样做是为了实现双重划分,产生双重结果。

答案 1 :(得分:1)

将变量sum的数据类型从int更改为double。这里sum和user.size都是整数,因此result也是一个整数。如果你将总和改为double,结果将是double类型。

答案 2 :(得分:1)

你需要在分割之前加注到双倍

mean2 = (double)sum / user1.size();

答案 3 :(得分:0)

如果在java中使用int的int将导致整数类型,这里你的sum也是整数,list的大小也是整数,因此你的结果将是int,所需的更改代码低于

static double average(ArrayList<Integer> user1){
          int sum = 0;
          double mean2 = 0.0;
          int userSize=user1.size();
          for(int i = 0; i < userSize; i++){
            sum = sum + user1.get(i);
          }
          mean2 = (double)sum / userSize;
          return mean2;
        }

OR

static double average(ArrayList<Integer> user1){
          double  sum = 0;
          double mean2 = 0.0;
          int userSize=user1.size();
          for(int i = 0; i < userSize; i++){
            sum = sum + user1.get(i);
          }
          mean2 = sum / userSize;
          return mean2;
        }