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

时间:2019-10-27 13:55:11

标签: java arrays

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%

6 个答案:

答案 0 :(得分:0)

您在底部的计算错误。

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变量应该是浮点数而不是整数

答案 1 :(得分:0)

您需要找到大于平均值的值总数。然后,您可以将该总数除以最大值,然后乘以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+"%");

 }

答案 2 :(得分:0)

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

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+"%");

我使用double类型删除了int division problemInt division: Why is the result of 1/3 == 0?

答案 3 :(得分:0)

您可以使用初始化为零的计数器变量首先对元素进行计数,然后只需使用[EL Warning]: moxy: 2019-10-27 15:01:08.586--javax.xml.bind.JAXBException: Exception Description: The @XmlAttribute property first in type model.Tuple2 must reference a type that maps to text in XML. model.Coords cannot be mapped to a text value. - with linked exception: [Exception [EclipseLink-50096] (Eclipse Persistence Services - 2.7.4.v20190115-ad5b7c6b2a): org.eclipse.persistence.exceptions.JAXBException Exception Description: The @XmlAttribute property first in type model.Tuple2 must reference a type that maps to text in XML. model.Coords cannot be mapped to a text value.] oct. 27, 2019 3:01:08 PM org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor aroundWriteTo GRAVE: MessageBodyWriter not found for media type=application/json, type=class model.ActionList, genericType=class model.ActionList.

即可对百分比进行计数

答案 4 :(得分:0)

  

计算具有大于值的元素的百分比   平均。首先,您必须找到这些元素的数量,然后将其除   元素总数

尝试一下:

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 count = 0;
    for(int i=0;i<arr.length;i++)
    {
         if(arr[i]>avg)
        {
          count=count+1;
        }
    }
    System.out.println(count);
    percentage = (count*100)/6;
    System.out.println("Percentage is: "+percentage+"%");

 }

输出:

Enter all the elements:
1 2 3 4 5 6
Average is: 3
3
Percentage is: 50%

答案 5 :(得分:0)

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

这就是说,您的代码中只有两个主要(功能性)问题:

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

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

总结:

  • 将百分比声明为两倍:double percentage = 0;
  • 替换percentage=(arr[i]*100/6); => percentage += (100.0/6);
  • [可选]截断/舍入要显示的百分比:例如System.out.printf("Percentage is: (%.2f) %%", percentage);

干杯!