5 回答

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊
您正在循環(huán)中計(jì)算平均值,這效率不高,因?yàn)樵撝翟诿看蔚鷷r(shí)都會(huì)被破壞。最好只在循環(huán)中保留總和,并在第一個(gè)循環(huán)后計(jì)算平均值。
話雖這么說,您的代碼中只有兩個(gè)主要(功能)問題:
第一個(gè)是循環(huán)中的百分比處理 - 您缺少“+=”并且不應(yīng)使用 arr[i] 值。
第二個(gè)是百分比的準(zhǔn)確性,應(yīng)該是 double (例如)而不是 int (平均值相同 - 如果確實(shí)需要)。
總結(jié) :
將百分比聲明為 double :
double percentage = 0;
替換
percentage=(arr[i]*100/6);
=>percentage += (100.0/6);
[可選]截?cái)?舍入顯示的百分比:例如
System.out.printf("Percentage is: (%.2f) %%", percentage);
干杯!

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超21個(gè)贊
您需要找到大于平均值的值的總數(shù)。然后,將總數(shù)除以最大值,然后乘以 100 以返回百分比。例如,如果我們使用 6, 5, 4, 3, 2, 1; 平均值為 3。大于 3 的總數(shù)為 3 (6, 5, 4)。然后,我們將 3(總計(jì))除以 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貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊
你的計(jì)算在底部是錯(cuò)誤的。
for(int i=0;i<arr.length;i++){
if(arr[i]>avg)
{
percentage=(arr[i]*100/6);
}
}
在這里,正確的計(jì)算是
for(int i=0;i<arr.length;i++){
if(arr[i]>avg)
{
percentage += (100/6);
}
}
arr[i]您必須將大于平均值的次數(shù)相加,然后將計(jì)數(shù)乘以100/6。上面的代碼正是這樣做的。
注意:percentage變量應(yīng)該是浮點(diǎn)數(shù)而不是整數(shù)

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊
您可以使用初始化為零的計(jì)數(shù)器變量首先對元素進(jìn)行計(jì)數(shù),然后您可以使用以下命令簡單地計(jì)算百分比COUNTER * 100 / (number of elements)

TA貢獻(xiàn)1735條經(jīng)驗(yàn) 獲得超5個(gè)贊
首先,要計(jì)算全局平均值,請?jiān)谧詈髨?zhí)行,使用數(shù)組長度更通用
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);
然后要計(jì)算大于平均值的部分,找到有多少個(gè)值大于平均值,然后除以總數(shù):
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 除法:為什么結(jié)果是 1/3 == 0?
添加回答
舉報(bào)