【问题标题】:Average incorrect : decimal point always .0 [duplicate]平均不正确:小数点始终为 .0 [重复]
【发布时间】:2016-02-24 04:53:36
【问题描述】:

我对数组很陌生,正在尝试创建一个简单的程序来计算 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);

谢谢!! :)

【问题讨论】:

  • 为什么用int n = Integer.parseInt(kb.nextLine());而不是int n=kb.nextInt();很简单

标签: java arrays int double average


【解决方案1】:

解决方案 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);
    

【讨论】:

    【解决方案2】:

    快速修复:更改5 -&gt; 5.0D

    为什么?让我们更详细地看一下划分过程:

    1. 你得到所有数字的总和:( boxes[0] + boxes[1] + boxes[2] + boxes[3] + boxes[4] ),结果 -> int
    2. 你除以sum(int type) / 5(int type) = 结果也是int type 3.8 -> 3。
    3. 最后一个是自动广播int -&gt; double

    这就是为什么你得到你所看到的。

    【讨论】:

      【解决方案3】:

      我无法回答你具体的问题,但 java 中有一个很大的话题叫做类型转换。我想,你读过它。这是一个很好的难题,您可以自己解决。让我想起了我的过去:)

      【讨论】:

      • 谢谢,我会调查的:)
      【解决方案4】:

      因为运算是用整数完成的,把你的5改成5.0

      【讨论】:

      • 嘿嘿,你已经打败了我几秒钟 :-)
      • 谢谢!这是有道理的
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-13
      • 2016-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-14
      相关资源
      最近更新 更多