2016-03-13 106 views
3

我正在爲我的班級做可怕的成績平均問題,並且遇到了很多打嗝,但這個似乎是主要的問題。我無法將我的方法中的計算平均值拉到toString。下面是一個方法:toString的年級平均

public void average() { 

    total = (((quiz1 + quiz2)/40 * 25) + (midterm/100 * 35) + (finalExam/100 * 40)); 
    DecimalFormat dec = new DecimalFormat("#.0"); 
    dec.format(total); 
    return; 

} 

而且我想在這裏得到它:

public String toString(){ 
    return ("Grade Report:\n" ....+ "Total Score  " + total + "\n" ....); 
+0

感謝您的幫助。這是更多的問題(當然)。我不得不從一個驅動程序中把它稱爲字符串,我認爲它是一個整體。 –

回答

2

average方法不應該設置任何東西 - 它應該只是返回平均值。然後,您可以在toString方法中格式化此號碼:

public double average() { 
    return (((quiz1 + quiz2)/40 * 25) + 
      (midterm/100 * 35) + 
      (finalExam/100 * 40)); 
} 

public String toString(){ 
    DecimalFormat dec = new DecimalFormat("#.0"); 
    String averageString = dec.format(average(); 
    return ("The average score is " + averageString); // just an example 
} 
2

你平均法已宣佈void作爲它的返回類型。它也許應該真正返回值,它計算:

public String average(){ 

    total = (((quiz1 + quiz2)/40 * 25) + (midterm/100 * 35) + (finalExam/100 * 40)); 
    DecimalFormat dec = new DecimalFormat("#.0"); 
    return dec.format(total); 
} 

public String toString(){ 
    return ("Grade Report:\n" + average() + "Total Score  " + total + "\n" ....); 
} 
1

我看到了兩個錯誤:

  • 你不回你的average方法的結果,當你可能應該是相將其存儲到一個字段中。這很容易解決。

  • 你可能會分開整數;如果我們可以推測quiz1,quiz2,midtermfinalExam都是int,那麼您將不會得到浮點結果。

第一解決方法是容易的:除去total字段並與一個局部變量替換它。然後,返回格式的結果。

String total = ... 

return dec.format(total); 

接下來,爲了確保您不劃分整數,請在您的商中放置一些小數。

String total = (((quiz1 + quiz2)/40.0 * 25) + (midterm/100.0 * 35) + (finalExam/100.0 * 40));