我的平均方法不断返回一个四舍五入的整数值而不是双重

我的平均方法不断返回一个四舍五入的整数值而不是双重

问题描述:

我正在编写一个Java类的介绍程序,我必须编写自己的方法,但它会一直以四舍五入的形式返回。所以平均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行,但我不知道为什么。

+1

'user1.stream()mapToInt(I - >ⅰ)。平均()orElseGet。(() - > 0);' – Andrew

+1

的int/int是一个int。如果你想要加倍,你必须在计算之前进行转换。 –

将变量和的数据类型从int更改为double。这里sum和user.size都是整数,所以结果也是一个整数。如果您将总和更改为双倍结果将是双重类型。

你需要转换你把像这样

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

你,因为你是一个ArrayList的大小,这是一个整数分频,从而产生一个整数除以整数一个整数前增加一倍。你需要做的是要么改变sum的数据类型或投:

double sum = 0; 

或者,

(double) sum/user1.size(); 

现在这样做是实现双师产生双重结果。

司如果INT与Java int的会导致整数类型为这里的总和也整数和列表的大小也整数所以你的结果会是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; 
     }