toString中的平均成绩

时间:2016-03-13 20:05:06

标签: java 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" ....);

3 个答案:

答案 0 :(得分: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 :(得分: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 :(得分:1)

我看到两个错误:

  • 当您可能而不是将其存储到字段中时,您不会返回average方法的结果。这很容易解决。

  • 你可能会划分整数;如果我们可以假设quiz1quiz2midtermfinalExam都是int,那么您将无法获得浮点结果。

第一个修复很简单:删除total字段并将其替换为局部变量。然后,返回格式的结果。

String total = ...

return dec.format(total);

接下来,为了确保不分割整数,请在商中添加一些小数。

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