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);
干杯!
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+"%");
}
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变量应该是浮点数而不是整数
TA贡献1853条经验 获得超18个赞
您可以使用初始化为零的计数器变量首先对元素进行计数,然后您可以使用以下命令简单地计算百分比COUNTER * 100 / (number of elements)
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+"%");
我用double
type 去掉int division problem
:Int 除法:为什么结果是 1/3 == 0?
添加回答
举报