如何计算大于平均数的百分比?

public static void main(String[] args) {


    int avg=0,sum=0,percentage=0;


    Scanner input = new Scanner(System.in);


    int[]arr=new int [6];


    System.out.println("Enter all the elements: ");


    for(int i=0; i<6; i++)

    {

        arr[i]=input.nextInt();

        sum+=arr[i];

        avg=sum/6;

    }

    System.out.println("Average is: "+avg);


    for(int i=0;i<arr.length;i++)

    {

         if(arr[i]>avg)

        {

                percentage=(arr[i]*100/6);

        }

    }

    System.out.println("Percentage is: "+percentage+"%");

}


例如,如果数组中有 3 个元素大于平均值,则百分比为 3*100/6=50%


翻阅古今
浏览 91回答 5
5回答

当年话下

您正在循环中计算平均值,这效率不高,因为该值在每次迭代时都会被破坏。最好只在循环中保留总和,并在第一个循环后计算平均值。话虽这么说,您的代码中只有两个主要(功能)问题:第一个是循环中的百分比处理 - 您缺少“+=”并且不应使用 arr[i] 值。第二个是百分比的准确性,应该是 double (例如)而不是 int (平均值相同 - 如果确实需要)。总结 :将百分比声明为 double :double percentage = 0;替换percentage=(arr[i]*100/6);=>percentage += (100.0/6);[可选]截断/舍入显示的百分比:例如System.out.printf("Percentage is: (%.2f) %%", percentage);干杯!

茅侃侃

您需要找到大于平均值的值的总数。然后,将总数除以最大值,然后乘以 100 以返回百分比。例如,如果我们使用 6, 5, 4, 3, 2, 1; 平均值为 3。大于 3 的总数为 3 (6, 5, 4)。然后,我们将 3(总计)除以 max (6) 得到 0.5,然后乘以 100 得到 50 (50%)。array = 6, 5, 4, 3, 2, 1average = 3max = 6percentage = average / max * 100&nbsp; &nbsp; public static void main(String[] args) {&nbsp; &nbsp; &nbsp; &nbsp; int avg=0,sum=0,percentage=0;&nbsp; &nbsp; &nbsp; &nbsp; Scanner input = new Scanner(System.in);&nbsp; &nbsp; &nbsp; &nbsp; int[]arr=new int [6];&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Enter all the elements: ");&nbsp; &nbsp; &nbsp; &nbsp; for(int i=0; i<6; i++)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; arr[i]=input.nextInt();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sum+=arr[i];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; avg=sum/6;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Average is: "+avg);&nbsp; &nbsp; &nbsp; &nbsp; int greaterThan = 0;&nbsp; &nbsp; &nbsp; &nbsp; for(int i=0;i<arr.length;i++)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(arr[i]>avg) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; greaterThan++;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; percentage = (int) (((double) greaterThan / (double) arr.length) * 100D);&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Percentage is: "+percentage+"%");&nbsp;}

慕哥6287543

你的计算在底部是错误的。for(int i=0;i<arr.length;i++){&nbsp; if(arr[i]>avg)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp;percentage=(arr[i]*100/6);&nbsp; &nbsp; }}在这里,正确的计算是for(int i=0;i<arr.length;i++){&nbsp; if(arr[i]>avg)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp;percentage += (100/6);&nbsp; &nbsp; }}arr[i]您必须将大于平均值的次数相加,然后将计数乘以100/6。上面的代码正是这样做的。注意:percentage变量应该是浮点数而不是整数

慕容森

您可以使用初始化为零的计数器变量首先对元素进行计数,然后您可以使用以下命令简单地计算百分比COUNTER * 100 / (number of elements)

喵喔喔

首先,要计算全局平均值,请在最后执行,使用数组长度更通用double sum=0;for(int i=0; i<6; i++){    arr[i] = input.nextInt();    sum += arr[i];}avg = sum/input.length;System.out.println("Average is: "+avg);然后要计算大于平均值的部分,找到有多少个值大于平均值,然后除以总数:double greaterAvg = 0;for(int i=0;i<arr.length;i++){    if(arr[i]>avg){            greaterAvg++;    }}double percentage = 100 * greaterAvg / input.lengthSystem.out.println("Percentage is: "+percentage+"%");我用doubletype 去掉int division problem:Int 除法:为什么结果是 1/3 == 0?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java