首页 > 解决方案 > 如何计算数组的平均值

问题描述

import java.util.*;
import java.lang.*;


public class MyClass 
{
    
        String[] getdata()
        {
            Scanner in=new Scanner(System.in);
            System.out.print("Enter numbers to calculate their average (choose 5 to 10 numbers only : ");
            
            String[] a=in.nextLine().split(" ");
            return a;
        }
        double average(String[] num)
        {
            double avg;
            int tot=0;
            int[] numbers = new int[num.length];
            int l=num.length;
            for(int j=0;j<l;j++)
            {
                tot=tot+numbers[j];
            }
            avg=tot/l;
            return avg;
        }
        void results(String[] arr,double avg)
        {
            int[] numbers1=new int[arr.length];
            int ll=arr.length;
            System.out.print("The average of the numbers ");
            for(int i=0;i<ll;i++)
            {
                numbers1[i]=Integer.parseInt(arr[i]);
                System.out.print(numbers1[i]+" ");
                
            }
            System.out.print("is ");
            System.out.printf("%.2f",avg);
        }
        
    public static void main(String args[]) 
    {
        MyClass obj=new MyClass();
        String[] x=obj.getdata();
        double y=obj.average(x);
        obj.results(x,y);
    }
}

代码运行成功,但对于任何给定的输出,平均值显示为 0.00。

该代码接受整数,它们之间有空格并计算平均值并显示它

帮我修一下。谢谢

标签: java

解决方案


您不会在方法numbers内部初始化数组average()。而不是tot=tot+numbers[j];执行以下操作

tot = tot + Integer.parseInt(num[j]);

并且为了避免整数删除更改计算如果avg到以下

avg = 1.0 * tot / l; //this will cast intermediate result of 1.0 * tot to double.

推荐阅读