平均不正确:小数点始终为.0

时间:2015-11-21 20:10:16

标签: java arrays int double average

我对数组很新,我正在尝试创建一个计算5个数字平均值的简单程序。但是,当计算平均值时,它的小数点始终为0而不是它应该是什么,但我不确定为什么.. 例如,如果我键入4,4,4,4,3,则显示3.0作为平均值而不是3.8。请帮忙!

        int[] boxes = new int[5];

        for (int i = 1 ; i <= 5 ; i++)
        {
            System.out.print("Enter number " + i + " > ");
            int n = Integer.parseInt(kb.nextLine());

            boxes[i-1] = n;
        }

        double mean = ( boxes[0] + boxes[1] + boxes[2] + boxes[3] + boxes[4] ) / 5;

        System.out.println("The average of those five numbers is: " + mean);

谢谢!! :)

4 个答案:

答案 0 :(得分:1)

这是因为操作是用整数完成的,将你的5改为5.0

答案 1 :(得分:0)

我无法回答你的具体细节,但在java中有一个叫做类型转换的巨大话题。我想,你看了。这对你来说是一个很好的解决方案。让我想起过去:)

答案 2 :(得分:0)

快速修复:更改5 -> 5.0D

为什么呢?让我们看一下分割过程的更多细节:

  1. 您可以从所有数字中得到总和:( boxes[0] + boxes[1] + boxes[2] + boxes[3] + boxes[4] ),结果 - &gt; int
  2. 您除了sum(int type) / 5(int type) =结果int type 3.8 - &gt; 3。
  3. 最后一个是自动加密int -> double
  4. 这就是为什么你得到你所看到的。

答案 3 :(得分:0)

解决方案1 ​​: - 您可以使用5.0而不是5来进行双重划分。就像:

 double mean = ( boxes[0] + boxes[1] + boxes[2] + boxes[3] + boxes[4] ) / 5.0;

解决方案2 : - 你可以使用你的总和的双重投射:

 double mean = (double)( boxes[0] + boxes[1] + boxes[2] + boxes[3] + boxes[4] ) / 5;

改善答案:

  • 您可以使用int n=kb.nextInt();代替int n = Integer.parseInt(kb.nextLine());

  • 您可以像for循环计算总和:

    int[] boxes = new int[5];
    int sum=0;
    for (int i = 1 ; i <= 5 ; i++)
    {
    System.out.print("Enter number " + i + " > ");
    int n=kb.nextInt();
    boxes[i-1] = n;
    sum +=boxes[i-1];
    }
    
    double mean = sum / 5.0;
    System.out.println("The average of those five numbers is: " + mean);