【问题标题】:JAVA 8 : Calculate the meanJAVA 8:计算平均值
【发布时间】:2020-09-27 12:12:02
【问题描述】:

我在计算平均值时遇到问题

让我们承认,我们需要知道平均投票数,因此我们将调查的投票数相加并计算平均值。

如果我们有

Survey 1 : +1
Survey 2 : -1, -1, -1, +1
Survey 2 : +1

平均值为(+1 -1 -1 -1 +1 +1) / 6 = 0

所以首先要修改,获得所有调查的平均分

Survey 1 : 1
Suveey 2 : -0,75
Survey 3 : 1 

然后计算调查的平均值(1 - 0,75 +1) / 3 to have 0.41

我计算每个调查的平均值如下,以第二次调查为例:

    int survey2[] = {-1, -1, -1, 1};
    int somme =  0;
    for (int nombre : survey2) {
        somme += nombre;
    }
    float moyenneSurvey2 = (float) somme /survey2.length;
    System.out.println(moyenneSurvey2);

但我的结果是 -0.5 而不是 -0.75,这是错误的

【问题讨论】:

  • 你错了,看来-1, -1, -1, +1 => -2-2/4 = -0.5
  • 为了避免整数除法,您需要在除法之前将事物转换为浮点数或双精度数。

标签: java java-8 average


【解决方案1】:

您遇到的问题是数学问题,而不是编程问题。

您认为调查 2 的平均值应为 -0.75,但事实并非如此。它的平均值应该是-0.5。让我告诉你为什么。

sum of survey 2 = -1 + -1 + -1 + 1
sum of survey 2 = ( -1 + -1 ) + ( -1 + 1 )
sum of survey 2 = -2 + 0
sum of survey 2 = -2

count of survey 2 = 1 + 1 + 1 + 1
count of survey 2 = 4

mean of survey 2 = (sum of survey 2) / (count of survey 2) 
mean of survey 2 = ( -2 ) / ( 4 )
mean of survey 2 = -0.5

这是编程中的重要一课。如果您构建一个单元测试(即使您没有对该程序进行单元测试,您基本上也构建了一个您手动执行的单元测试),您的测试中可能会出现错误(以及您的程序中的错误)。

祝你好运,祝你的程序正常运行。

【讨论】:

  • 你的理由我想要 +1 的平均票数。所以我只需要计算 +1 并除以调查的大小,以获得我想要的正确平均值
  • @Rodik 我没有理由采用这种方法。我正在使用 sum、count 和 mean 的定义。我只有一个解释,为什么你得到的答案与你的程序不匹配。如果您只取具有特定值 (+1) 的投票的平均值,则平均值为 +1,因为您丢弃了所有其他值(这会减少计数)。我不确定你想要什么;当你以一种令人困惑的方式表达它时。如果数学中存在混淆,那么任何程序都无法将混淆弄清楚,因为编程是一种离散数学。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-07
  • 1970-01-01
  • 2013-01-14
  • 2012-06-19
相关资源
最近更新 更多