计算Java中的成绩平均值

时间:2014-10-11 12:39:02

标签: java

我想创建一个程序,我可以在其中输入数字和等级,计算机将仅计算传递的平均值,但如果分子或者dinomenator为零,将如何解决这个问题?

public class Grades {

    public static void main (String[] args) {
        double grade1, grade2, grade3, avg, sum=0;
        int counter = 0;
        Scanner input = new Scanner(System.in);
        System.out.println("Enter your first Grade");
        grade1 = input.nextDouble();
        if (grade1 >= 90)
        {
            System.out.println("excellent");
            counter++;
            sum += grade1;
        }
        else if (grade1 < 90 && grade1 >= 70)
        {
            System.out.println("very good");
            counter++;
            sum += grade1;
        }
        else if (grade1 < 70 && grade1 >= 60)
        {
            System.out.println("fair");
            counter++;
            sum += grade1;
        }
        else if (grade1 < 60)
        {
            System.out.println("you fail");
        }
        System.out.println("Enter your second Grade");
        grade2 = input.nextDouble();
        if (grade2 >= 90)
        {
            System.out.println("excellent");
            counter++;
            sum += grade2;
        }
        else if (grade2 < 90 && grade2 >= 70)
        {
            System.out.println("very good");
            counter++;
            sum += grade2;
        }
        else if (grade2 < 70 && grade2 >= 60)
        {
            System.out.println("fair");
            counter++;
            sum += grade2;
        }
        else if (grade2 < 60)
            System.out.println("you fail");
        System.out.println("Enter your third Grade");
        grade3 = input.nextDouble();
        if (grade3 >= 90)
        {
            System.out.println("excellent");
            counter++;
            sum += grade3;
        }
        else if (grade3 < 90 && grade3 >= 70)
        {
            System.out.println("very good");
            counter++;
            sum += grade3;
        }
        else if (grade3 < 70 && grade3 >= 60)
        {
            System.out.println("fair");
            counter++;
            sum += grade3;
        }
        else if (grade3 < 60)
            System.out.println("you fail");
        avg=sum/counter;
        System.out.println("your average is : "+avg);


    }
}

2 个答案:

答案 0 :(得分:1)

对于这种类型的东西,我们使用异常处理,但如果你是初学者,你可以通过应用if条件来检查天气数或分母为零来修复它

else if (grade3 < 60)
    System.out.println("you fail");
if(sum == 0 || counter == 0) {
    System.out.println("Invalid sum or total count");
} else {
    avg = sum / counter;
}
System.out.println("your average is : " + avg);

答案 1 :(得分:0)

我不完全确定我理解您的问题但是当我运行您的代码时,我发现如果sumcounter为0,则结果为NaN

在Java中,NaN代表“不是数字”。发生这种情况是因为您尝试执行无法实际执行的浮点操作(或者会给出无用的答案)。例如,除以0。

就像我之前说过的,我不完全确定我理解你的问题,但避免这种情况的最佳方法是检查以确保sumcounter的值都是在执行计算之前非零。

所以,而不是:

avg=sum/counter;
你可以尝试:

if(sum > 0 && counter > 0) avg = sum / counter;

实际上,有很多方法可以检查这个,但这只是一个可以确保您获得有用的值的方法。另一种方法是在用户输入期间检查这个,但在我确定我知道你在问什么之前我不会进入。