Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 平均值不正确:始终为小数点。0_Java_Arrays_Int_Double_Average - Fatal编程技术网

Java 平均值不正确:始终为小数点。0

Java 平均值不正确:始终为小数点。0,java,arrays,int,double,average,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

我对数组非常陌生,我正在尝试创建一个简单的程序来计算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[]框=新的int[5];

对于(int i=1;i这是因为该操作是用整数完成的,请将5更改为5.0

我无法回答具体问题,但java中有一个巨大的主题,称为类型转换。我想,你读过了。这对你自己来说是一个很好的难题。让我想起了我的过去:)快速修复:更改
5->5.0D

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

  • 您从所有数字中获得总和:
    (框[0]+框[1]+框[2]+框[3]+框[4])
    ,结果->
    int
  • 您将
    sum(int-type)/5(int-type)
    =结果也
    int-type
    3.8->3
  • 最后一个是它的自动播放
    int->double

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

    解决方案1: -可以使用5.0而不是5来进行双除法。如下所示:

     double mean = ( boxes[0] + boxes[1] + boxes[2] + boxes[3] + boxes[4] ) / 5.0;
    
     double mean = (double)( boxes[0] + boxes[1] + boxes[2] + boxes[3] + boxes[4] ) / 5;
    
    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: -你可以像这样对你的总数进行双重转换:

     double mean = ( boxes[0] + boxes[1] + boxes[2] + boxes[3] + boxes[4] ) / 5.0;
    
     double mean = (double)( boxes[0] + boxes[1] + boxes[2] + boxes[3] + boxes[4] ) / 5;
    
    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);
    
    改进您的答案:

    • 您可以使用
      int n=kb.nextInt()
      而不是
      int n=Integer.parseInt(kb.nextLine())

    • 您可以在
      循环中为
      计算总和,如下所示:

       double mean = ( boxes[0] + boxes[1] + boxes[2] + boxes[3] + boxes[4] ) / 5.0;
      
       double mean = (double)( boxes[0] + boxes[1] + boxes[2] + boxes[3] + boxes[4] ) / 5;
      
      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);
      
      int[]框=新的int[5];
      整数和=0;
      
      因为(inti=1;我呵呵,你比我领先了几秒钟:-)谢谢!这很有道理,我来研究一下:)为什么要使用
      int n=Integer.parseInt(kb.nextLine())而不是
      int n=kb.nextInt()非常简单