2014-10-11 248 views
0

我想创建一个程序,可以输入数字和等级,并且计算机只会计算通过的平均值,但是如果分子或者是否为零,会发生什么?我该如何解决这个问题?计算Java等级的平均值

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); 


    } 
} 
+0

这是一个很大的代码...问题是什么? – Mureinik 2014-10-11 12:43:32

+0

“但是如果分子或者dinounator是零将会发生什么事情” - 由您决定将会发生什么。 – Eran 2014-10-11 12:43:59

+0

在划分之前检查分子/分母。这取决于你在找到零除数时会发生什么。我会假设你只给1个分数加1,并且每个分数都会平均下来...... – Mike 2014-10-11 12:47:40

回答

1

对于这种类型的,我们使用异常处理,但如果你是一个初学者ü可以通过应用如果条件检查的天气NUM或分母解决它的东西是零

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); 
0

我不完全相信,我明白你的问题,但是当我运行代码,我发现,如果任sumcounter为0的结果是NaN

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

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

因此,而不是:

avg=sum/counter; 

你可以尝试:

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

事实上,有很多方法可以检查这个,但是这仅仅是一个会确保你得到一个有用的价值返回给你。另一种方法是在用户输入过程中检查这一点,但在我确定知道你在问什么之前,我不会进入这个过程。