我正在为学校工作,以计算给定输入的平均测试分数。当我输入" -1" 时,它不会退出do / while循环。当我插入一个值时,计数不会增加,因此平均值无法正确计算。
- 创建一个名为Average的类。
- 尝试在main方法中使用单独的部分来声明所有变量,获取输入,执行处理和执行输出。为每个部分创建评论。
- 在main的声明部分中,声明一个名为average的双变量。
- 在main的输入部分,使用JOptionPane显示一条打开的消息,解释程序的用途。
- 在main的处理部分,通过调用名为calcAverage()的方法来指定average的值。
- 在calcAverage方法中,声明int变量count,score和total,以及一个名为average的double变量。
- 同样在calcAverage方法中,使用do-while循环从用户获取分数,直到用户输入-1退出。 (您向用户发送的信息应为"输入分数或-1以退出"。)
- 在calcAverage方法中,计算平均分数并将该值返回主方法。
- 在main的输出部分,显示一个JOptionPane窗口,其中显示(例如)," 5个分数的平均值为75.8。"
醇>
import javax.swing.JOptionPane;
public class Average {
static int count = 0;
public static void main(String[] args) {
//Declaration section
double average;
//Input Section
calcAverage();
//Processing Section
average = calcAverage();
//Output Section
JOptionPane.showMessageDialog(null, "The average of the " + count + "scores is" + average);
} // end main
public static double calcAverage() {
int count = 0, score = 0, total = 0;
double average;
String input;
do {
input = JOptionPane.showInputDialog("Enter a score or -1 to quit");
score = Integer.parseInt(input);
total = total + score;
count++;
} while (score != -1);
average = (total / count);
return average;
} // end calcAverage
} // end class
答案 0 :(得分:3)
count
中的calcAverage
局部变量会影响count
类中您声明为static
的{{1}}变量,因此Average
变量永远不会更新;它保持为0.不要在static
中重新声明此变量。
您正在调用calcAverage
两次,并忽略第一次返回的内容。因此,您必须输入calcAverage
两次才能完成该程序。删除第一个-1
电话。
即使输入calcAverage
,也总是计算数字,因为直到循环结束才检查条件。仅当-1
不是if
时才添加total
条件以更新count
和score
。
你在这一行有整数除法:
-1
在Java中,整数除法产生一个整数,因此2个数字5和6的平均值为5,而不是5.5。 Cast one of them to double
average = (total / count);