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


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%

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

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

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

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 problem:Int除法:为什么1/3==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%

您需要找到大于平均值的值的总数。然后取总数除以最大值,再乘以100,得到百分比。例如,如果我们使用6、5、4、3、2、1;平均值为3。大于3的总数为3(6,5,4(。然后我们取3(总数(,除以max(6(得到.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+"%");
}

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

您在循环中计算平均值,这是无效的,因为值在每次迭代中都会被压碎。最好在循环中只保留和,并在第一个循环后计算平均值。

话虽如此,您的代码中只有两个主要(功能(问题:

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

  • 第二个是百分比的准确性,应该是double(例如(而不是int(如果真的需要的话,平均值也是如此(。

总结:

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

干杯!

最新更新