我有這個代碼返回小於60年級的百分比。但它不會導致所需的百分比。有人幫我弄清楚什麼是錯的。我的代碼有什麼問題。
public float getPercentFailing(float[] grades) {
float sum= 0;
for (int i = 0; i < .6; i++) {
sum = sum + grades[i];
return sum/100;
}
return 0;
}
我有這個代碼返回小於60年級的百分比。但它不會導致所需的百分比。有人幫我弄清楚什麼是錯的。我的代碼有什麼問題。
public float getPercentFailing(float[] grades) {
float sum= 0;
for (int i = 0; i < .6; i++) {
sum = sum + grades[i];
return sum/100;
}
return 0;
}
嘗試類似這樣的事情。您需要首先添加所有成績,這就是您在for循環中所做的。現在,因爲我們只想要60歲以上的成績,我們使用if
語句來檢查該值是否在60以上。如果是,請將其添加到總和中並計算一到int count
以跟蹤我們迄今爲止添加了多少成績。
for (int i = 0; i < grades.length; i++) { //loop through all the grades
if(grade[i] < 60) { //if the grade is over 60
sum = sum + grades[i]; //add the grade to the sum
count++ //remember how many grades so we can get average
}
}
然後,通過等級,或grades.length
和return
它的總數劃分等級的總和。
return sum/count ; //calculate average
現在一切都在一起:
public float getPercentFailing(float[] grades) {
int count=0;
float sum= 0;
for (int i = 0; i < grades.length; i++) {
if(grade[i] < 60) {
sum = sum + grades[i];
count++
}
}
return sum/count;
}
-1這似乎是錯誤的。您計算的年級平均值低於60%。如果我正確理解了OP,那麼這與成績低於60%的百分比不同。 – NullUserException
我看到你做了什麼,這解決了,唯一我不得不種姓總和浮動。因爲預期的返回類型是浮動的。 –
@AdeqHero,NullUser是正確的。我相信我誤解了這個問題。您正在尋找低於60%的成績百分比?所以十個測試中五個失敗的成績將是50%。 –
你的循環只能一次,i=0
,因爲i
遞增爲整數0
到1
。
你要通過各年級循環和計數那已經低於60%的數量:
int count = 0;
for (int i=0; i!=grades.length; ++i) {
if (grades[i] < 0.6) {
count++;
}
}
return ((float) count)/grades.length
然後你計算的百分比潛水它總數
最後一行需要使用'1.0f'(或者更好,'((float)count'')而不是'1.0',因爲函數需要返回一個'float'。 –
你的邏輯錯誤。你想要通過所有的成績,並檢查每個成績(而不是循環指數)0.6。你不想平均分數,你要計算有多少少於閾值。像這樣的東西應該工作:
public float getPercentFailing(float[] grades) {
int failed = 0;
for (int i = 0; i < grades.length; i++) {
if (grades[i] < 0.6) {
failed++;
}
}
return ((float) failed)/grades.length;
}
如果你需要它作爲一個百分比,而不是分數,改變最後一行:
return 100.0f * failed/grades.length;
變量「i」是一個整數,並且正在使用作爲反覆遍歷數組「成績」的計數器。使用計數器'i'來索引數組以獲得等級值,然後使用if語句來檢查它是否低於60%。然後,如果它小於60%,請將其添加到您的總百分比中,並以百分比形式返回該值。
擴展/編輯功能代碼:
public float getPercentFailing(float[] grades) {
int count=0;
float sum= 0;
for (int i = 0; i < grades.length; i++) {
float grade = grades[i];
if(grade < 0.6)
sum = sum + grades[i];
count++;
}
return sum/count;
}
-1與特徵的答案錯誤相同,這是錯誤的。 – NullUserException
這** **會編譯,但'.6'仍然不是你想要的。 – arshajii
它編譯。我不知道如何。這是我的下一個基本考試練習,但它的愚蠢,他們不給解決方案。 –