当前位置: 首页 > 面试题库 >

用Java计算平均值

郭意
2023-03-14
问题内容

编辑:我已经写了平均的代码,但我不知道如何使它也使用从我的args.length而不是数组的整数

我需要编写一个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分配和每件事似乎工作正常,除了当我把一个数字 谢谢 赋值:创建一个询问考试结果并计算成绩平均值的程序。成绩是4到10之间的浮点数。程序要求成绩,直到键入负数。如果用户给出的分数不是4到10之间的数字,则文本“无效成绩!”将在屏幕上打印,程序要求另一个分数。最后,程序在屏幕上打印输入的成绩数及其平均值,如示例打印所示。如果没有输入成绩,通知“您没有输入任何成绩。”是屏幕上唯一打印

  • 问题内容: 我有一个表,其中包含一列要从中提取信息的JSON数据。具体来说,我只想获取平均值。 我所拥有的例子: 我想要的例子: 关于如何使该查询正常工作的任何建议? 问题答案: 您的json数组被弄乱了,就像@poszcommented一样。必须是: 您的查询也以多种方式扭曲。在第 9.3 页中将像这样工作: SQL提琴。 在即将到来的pg 9.4中, 我们可以使用新的来简化操作(转换中也不太容

  • 问题内容: 我正在尝试根据前三个月的实际情况或预测来计算销售预测。 假设我要计算 每个 公司未来18个月的预测。 我正在查看去年的数据。一些公司有例如2个月的数据,而其他12个月等等。 我已经搜索并找到了许多不同的解决方案,但是所有这些解决方案都只考虑了实际情况。 我认为我必须进行递归CTE,但我无法弄清楚。 请帮忙 :) 问题答案: 因此,您想要基于先前的移动平均线的移动平均线:)我认为,在SQ

  • 我一直在尝试编写一些代码来使用MapReduce查找数字的平均值。 我尝试使用全局计数器来实现我的目标,但是我无法在映射器的< code>map方法中设置计数器值,也无法在缩减器的< code>reduce方法中检索计数器值。 我是否必须在< code>map中使用全局计数器(例如,通过使用所提供的< code>Reporter的< code>incrCounter(key,amount))?或者

  • 我试图从购物车(ArrayList)中计算平均值。平均值是指所有产品的总和除以它的数量?,如果我错了请纠正我,也许这就是为什么我的逻辑不太好用。 我试图做一个循环来计算所有乘积的总和,然后除以它的数量。

  • 问题内容: Y1961 Y1962 Y1963 Y1964 Y1965 Region 0 82.567307 83.104757 83.183700 83.030338 82.831958 US 1 2.699372 2.610110 2.587919 2.696451 2.846247 US 2 14.131355 13.690028 13.599516 13.649176 13.649046