我正在编写一个程序来介绍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行,但我不知道为什么。
答案 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;
}