为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

翻阅古今 2024-01-05 10:58:51
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%
查看完整描述

5 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

您正在循环中计算平均值,这效率不高,因为该值在每次迭代时都会被破坏。最好只在循环中保留总和,并在第一个循环后计算平均值。

话虽这么说,您的代码中只有两个主要(功能)问题:

  • 第一个是循环中的百分比处理 - 您缺少“+=”并且不应使用 arr[i] 值。

  • 第二个是百分比的准确性,应该是 double (例如)而不是 int (平均值相同 - 如果确实需要)。

总结 :

  • 将百分比声明为 double :double percentage = 0;

  • 替换percentage=(arr[i]*100/6);=>percentage += (100.0/6);

  • [可选]截断/舍入显示的百分比:例如System.out.printf("Percentage is: (%.2f) %%", percentage);

干杯!


查看完整回答
反对 回复 2024-01-05
?
茅侃侃

TA贡献1842条经验 获得超21个赞

您需要找到大于平均值的值的总数。然后,将总数除以最大值,然后乘以 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, 1

average = 3

max = 6

percentage = average / max * 100

    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);


        int greaterThan = 0;


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

        {

             if(arr[i]>avg) {

                    greaterThan++;

            }

        }

        percentage = (int) (((double) greaterThan / (double) arr.length) * 100D);


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


 }


查看完整回答
反对 回复 2024-01-05
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

你的计算在底部是错误的。


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

  if(arr[i]>avg)

    {

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

    }

}

在这里,正确的计算是


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

  if(arr[i]>avg)

    {

       percentage += (100/6);

    }

}

arr[i]您必须将大于平均值的次数相加,然后将计数乘以100/6。上面的代码正是这样做的。


注意:percentage变量应该是浮点数而不是整数


查看完整回答
反对 回复 2024-01-05
?
慕容森

TA贡献1853条经验 获得超18个赞

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



查看完整回答
反对 回复 2024-01-05
?
喵喔喔

TA贡献1735条经验 获得超5个赞

首先,要计算全局平均值,请在最后执行,使用数组长度更通用


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.length

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

我用doubletype 去掉int division problem:Int 除法:为什么结果是 1/3 == 0?


查看完整回答
反对 回复 2024-01-05
  • 5 回答
  • 0 关注
  • 77 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信