使用Do While循环的平均分数Java

时间:2015-10-27 20:30:36

标签: java

我正在为学校工作,以计算给定输入的平均测试分数。当我输入" -1" 时,它不会退出do / while循环。当我插入一个值时,计数不会增加,因此平均值无法正确计算。

  
      
  1. 创建一个名为Average的类。
  2.   
  3. 尝试在main方法中使用单独的部分来声明所有变量,获取输入,执行处理和执行输出。为每个部分创建评论。
  4.   
  5. 在main的声明部分中,声明一个名为average的双变量。
  6.   
  7. 在main的输入部分,使用JOptionPane显示一条打开的消息,解释程序的用途。
  8.   
  9. 在main的处理部分,通过调用名为calcAverage()的方法来指定average的值。
  10.   
  11. 在calcAverage方法中,声明int变量count,score和total,以及一个名为average的double变量。
  12.   
  13. 同样在calcAverage方法中,使用do-while循环从用户获取分数,直到用户输入-1退出。 (您向用户发送的信息应为"输入分数或-1以退出"。)
  14.   
  15. 在calcAverage方法中,计算平均分数并将该值返回主方法。
  16.   
  17. 在main的输出部分,显示一个JOptionPane窗口,其中显示(例如)," 5个分数的平均值为75.8。"
  18.   
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

1 个答案:

答案 0 :(得分:3)

count中的calcAverage局部变量会影响count类中您声明为static的{​​{1}}变量,因此Average变量永远不会更新;它保持为0.不要在static中重新声明此变量。

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

即使输入calcAverage,也总是计算数字,因为直到循环结束才检查条件。仅当-1不是if时才添加total条件以更新countscore

你在这一行有整数除法:

-1

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

average = (total / count);