【问题标题】:Average Score Java using a Do While loop使用 Do While 循环的 Java 平均分数
【发布时间】:2015-10-27 20:30:35
【问题描述】:

我正在为学校分配一项作业,以根据给定的输入计算平均考试成绩。当我输入 "-1" 时,它不会退出 do/while 循环。当我插入一个值时,计数不会增加,因此平均值计算不正确。

  1. 创建一个名为Average 的类。
  2. 尝试在 main 方法中使用单独的部分来声明所有变量、获取输入、执行处理和执行输出。为每个部分创建评论。
  3. 在 main 的声明部分,声明一个名为 average 的双精度变量。
  4. 在 main 的输入部分,使用 JOptionPane 显示一条打开消息,说明程序的用途。
  5. 在 main 的处理部分,通过调用名为 calcAverage() 的方法来分配平均值。
  6. 在 calcAverage 方法中,声明 int 变量 count、score 和 total,以及一个名为 average 的 double 变量。
  7. 同样在 calcAverage 方法中,使用 do-while 循环从用户那里获取分数,直到用户输入 -1 退出。 (您给用户的信息应该是“输入分数或 -1 退出”。)
  8. 在 calcAverage 方法中,计算平均分数并将该值返回给 main 方法。
  9. 在 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

【问题讨论】:

标签: java


【解决方案1】:

您在calcAverage 中的count 局部变量正在遮蔽您在static 类中声明的count 变量Average,因此static 变量永远不会更新;它仍然是 0。不要在 calcAverage 中重新声明这个变量。

您调用了两次calcAverage,而忽略了第一次返回的内容。因此,您必须输入两次-1 才能完成程序。删除第一个calcAverage 调用。

即使输入了-1,您也始终计算数字,因为直到循环结束才检查条件。仅当 score 不是 -1 时,添加 if 条件以更新 totalcount

你在这一行有整数除法:

average = (total / count);

在 Java 中,整数除法产生一个整数,因此 2 个数字 5 和 6 的平均值将是 5,而不是 5.5。 Cast one of them to double.

average = ((double) total / count);

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-11-26
  • 2019-03-04
  • 1970-01-01
  • 2016-03-27
  • 1970-01-01
  • 2016-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多