用Java计算平均值

我需要编写一个Java程序,该程序可以计算:1.读入的整数数2.平均值-不必是整数!

注意!我不想从数组中计算平均值,但是要在args中计算整数。

目前我已经写了这个:

int count = 0;

for (int i = 0; i<args.length -1; ++i)

count++;

System.out.println(count);

}

int nums[] = new int[] { 23, 1, 5, 78, 22, 4};

double result = 0; //average will have decimal point

{

for(int i=0; i < nums.length; i++){

result += nums[i];

}

System.out.println(result/count)

}

谁能指导我正确的方向?还是举个例子,以书面形式指导我塑造这段代码?

提前致谢

回答:

只需对您的代码进行一些小的修改即可(为了清楚起见,使用了一些var重命名):

double sum = 0; //average will have decimal point

for(int i=0; i < args.length; i++){

//parse string to double, note that this might fail if you encounter a non-numeric string

//Note that we could also do Integer.valueOf( args[i] ) but this is more flexible

sum += Double.valueOf( args[i] );

}

double average = sum/args.length;

System.out.println(average );

注意,循环也可以简化:

for(String arg : args){

sum += Double.valueOf( arg );

}

编辑:OP似乎要使用args数组。这似乎是一个String数组,因此相应地更新了答案。

正如zoxqoj正确指出的那样,上面的代码未考虑整数/双精度溢出。尽管我假设输入值将足够小而不会出现问题,但以下代码段可用于非常大的输入值:

BigDecimal sum = BigDecimal.ZERO;

for(String arg : args){

sum = sum.add( new BigDecimal( arg ) );

}

这种方法有几个优点(尽管速度较慢,所以不要将其用于时间紧迫的操作):

  • 保持精度,将精度加倍,您将逐渐降低数学运算数量的精度(或完全不获得精确的精度,具体取决于数字)
  • 实际上消除了溢出的可能性。但是请注意,a BigDecimal可能大于a double或的大小long

以上是 用Java计算平均值 的全部内容, 来源链接: utcz.com/qa/435675.html

回到顶部