我正在为我的班级做一个可怕的平均成绩问题并遇到了很多打嗝,但这个问题似乎是主要问题。我无法将我方法中的计算平均值提取到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)
您的普通方法已将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
方法的结果。这很容易解决。
你可能会划分整数;如果我们可以假设quiz1
,quiz2
,midterm
和finalExam
都是int
,那么您将无法获得浮点结果。
第一个修复很简单:删除total
字段并将其替换为局部变量。然后,返回格式的结果。
String total = ...
return dec.format(total);
接下来,为了确保不分割整数,请在商中添加一些小数。
String total = (((quiz1 + quiz2) / 40.0 * 25) + (midterm / 100.0 * 35) + (finalExam / 100.0 * 40));