2012-10-11 82 views
-4

我有這個代碼返回小於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; 
} 
+2

這** **會編譯,但'.6'仍然不是你想要的。 – arshajii

+0

它編譯。我不知道如何。這是我的下一個基本考試練習,但它的愚蠢,他們不給解決方案。 –

回答

1

嘗試類似這樣的事情。您需要首先添加所有成績,這就是您在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.lengthreturn它的總數劃分等級的總和。

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

-1這似乎是錯誤的。您計算的年級平均值低於60%。如果我正確理解了OP,那麼這與成績低於60%的百分比不同。 – NullUserException

+0

我看到你做了什麼,這解決了,唯一我不得不種姓總和浮動。因爲預期的返回類型是浮動的。 –

+0

@AdeqHero,NullUser是正確的。我相信我誤解了這個問題。您正在尋找低於60%的成績百分比?所以十個測試中五個失敗的成績將是50%。 –

0

你的循環只能一次,i=0,因爲i遞增爲整數01

0

你要通過各年級循環和計數那已經低於60%的數量:

int count = 0; 
for (int i=0; i!=grades.length; ++i) { 
    if (grades[i] < 0.6) { 
     count++; 
    } 
} 

return ((float) count)/grades.length 

然後你計算的百分比潛水它總數

+0

最後一行需要使用'1.0f'(或者更好,'((float)count'')而不是'1.0',因爲函數需要返回一個'float'。 –

1

你的邏輯錯誤。你想要通過所有的成績,並檢查每個成績(而不是循環指數)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; 
-1

變量「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; 
} 
+0

-1與特徵的答案錯誤相同,這是錯誤的。 – NullUserException