Java 使用meathod查找数组的平均值

Java 使用meathod查找数组的平均值,java,arrays,methods,integer,average,Java,Arrays,Methods,Integer,Average,我正在编写一个程序,显示数组的最大值、最小值和平均值 到目前为止,我有最大值和最小值的方法,但没有平均值的方法 我的代码: class Test { public static void main(String[] args) { int[] arr = {5,12,-3,7,3,22,31,2,16,56}; System.out.println(minValue(arr)); System.out.println(maxValue(a

我正在编写一个程序,显示数组的最大值、最小值和平均值

到目前为止,我有最大值和最小值的方法,但没有平均值的方法

我的代码:

class Test
{
    public static void main(String[] args) 
    {
        int[] arr = {5,12,-3,7,3,22,31,2,16,56};
        System.out.println(minValue(arr));
    System.out.println(maxValue(arr)); 
    System.out.println(avgValue(arr)); 

    }// end of Main

  // Array Methods
    public static int minValue(int[] nums)
    {
         int minValue = nums[0]; 
    for(int i=1;i < nums.length; i++){ 
      if( nums[i] < minValue){ 
        minValue = nums[i]; 
      } 
    } 
    return minValue; 
  } 
    

  public static int maxValue(int[] nums)
    {
         int maxValue =nums[0]; 
    for(int i=1;i < nums.length ;i++){ 
      if( nums[i] > maxValue){ 
         maxValue = nums[i]; 
      } 
    } 
    return maxValue; 
    }

   public static int avgValue(int[] nums)
    {
    int temp = 4;

    return temp;
    }
  
}// end fo class
类测试
{
公共静态void main(字符串[]args)
{
int[]arr={5,12,-3,7,3,22,31,2,16,56};
系统输出println(最小值(arr));
System.out.println(maxValue(arr));
系统输出打印LN(平均值(arr));
}//干管末端
//数组方法
公共静态int minValue(int[]nums)
{
int minValue=nums[0];
对于(inti=1;imaxValue){
maxValue=nums[i];
} 
} 
返回最大值;
}
公共静态int avgValue(int[]nums)
{
内部温度=4;
返回温度;
}
}//课程结束
现在,查找平均值的方法填充了一个始终返回“4”的占位符整数


如何编写消息来查找数组的平均值?

这应该可以做到:

public static double avgValue(int[] nums)
    int sum = 0;
    for (int value : nums) {
        sum += value;
    }
    return sum / nums.length;
}
一个简单的方法是:

  public static double avgValue(int[] nums) {
    int total = 0;

    for(int i = 0; i < nums.length; i++) {
      total = total + arr[i];
    }

    double average = total / (double) nums.length;
    return average;
  }
公共静态双平均值(int[]nums){
int-total=0;
对于(int i=0;i
这是正确的方法:

public static float avgValue(int[] nums)
{
    float sum = 0.0f;
    float avg = 0.0f;
    for(int i=0; i < nums.length;i++){
        sum += nums[i];
    }
    avg = sum/nums.length;
    return avg;
}
公共静态浮点平均值(int[]nums)
{
浮动总和=0.0f;
浮动平均值=0.0f;
对于(int i=0;i
使用Java流

int[] data = {1,5,4,9,2,1,4,7,8};

IntSummaryStatistics s = Arrays.stream(data).summaryStatistics();
System.out.println("Average: " + s.getAverage());
System.out.println("Count: " + s.getCount());
System.out.println("Min: " + s.getMin());
System.out.println("Max: " + s.getMax());
System.out.println("Sum: " + s.getSum());
输出

Average: 4.555555555555555
Count: 9
Min: 1
Max: 9
Sum: 41

将数组相加成一个双精度数组。然后除以元素的数量,假设你想要平均值。如果总数是奇数,那么它就不会得到正确的答案。除法将是整数。
total/nums.length
是整数除法。将它赋给一个
双精度
并不会使它成为浮点除法。实际上你是对的!谢谢你指出这一点,我完全忘记了。你的“技巧”以整数除法结束,这会产生错误的结果。为什么你显式地使用
float
而不是
double