我的程序打印语句有误

问题描述:

当我运行我的程序并选择0到100之间的数字时,它打印出我的答案错误。我的程序打印语句有误

Java控制台

 
----jGRASP exec: java TestScores 

How many tests do you have? 3 
Enter grade for Test 1: 80 
Enter grade for Test 2: 80 
Enter grade for Test 3: 80 
The average is: 26.666666666666668The average is: 53.333333333333336The average is: 80.0 
----jGRASP: operation complete. 
import java.util.Scanner; 

public class TestScores { 

    public static void main(String[] args) 
    { 
     int numTests = 0; 
     double[] grade = new double[numTests]; 
     double totGrades = 0; 
     double average; 
     int check = 1; 

     Scanner keyboard = new Scanner(System.in); 
     System.out.print("How many tests do you have? "); 
     numTests = keyboard.nextInt(); 
     grade = new double[(int) numTests]; 

     for (int index = 0; index < grade.length; index++) 
     { 
      System.out.print("Enter grade for Test " + (index + 1) + ": "); 
      grade[index] = keyboard.nextDouble(); 

      if (grade[index] < 0 || grade[index] > 100) 
      { 
       try 
       { 
        throw new InvalidTestScore(); 
       } 
       catch (InvalidTestScore e) 
       { 
        e.printStackTrace(); 
       } 
       break; 
      } 
     } 

     for (int index = 0; index < grade.length; index++) { 
      totGrades += grade[index]; 
      average = totGrades/grade.length; 
      System.out.print("The average is: " + average); 
     } 
    } 
} 

public class InvalidTestScore extends Exception 
{ 
    public InvalidTestScore() 
    { 
     super(" Error: Enter a number between 0 and 100"); 
    } 
} 
+0

我想让我的程序打印一行和正确的数量。 – lonesarah 2011-02-22 16:58:01

+4

`尝试{thow new Ex(); } catch(Ex e){e.printStackTrace()}```````必须是我见过的例外中最令人震惊,令人难以置信的滥用行为之一。另外,你的格式是......我们只是说,明智地使用空白可以帮助你阅读,但是你可以做得更多。 – delnan 2011-02-22 17:02:19

我将计算从循环内部到外部的和的语句移动到外部。

我的新代码是。

import java.util.Scanner;

公共类TestScores

{

public static void main(String[]args) 

    { 

      int numTests = 0; 

      double[] grade = new double[numTests]; 

      double totGrades = 0; 

      double average; 

       int check = 1; 


      Scanner keyboard = new Scanner(System.in); 


      System.out.print("How many tests do you have? "); 

      numTests = keyboard.nextInt(); 



      grade = new double[(int) numTests]; 



      for (int index = 0; index < grade.length; index++) 

      { 

        System.out.print("Enter grade for Test " + (index + 1) + ": "); 

        grade[index] = keyboard.nextDouble(); 


        if (grade[index] < 0 || grade[index]> 100) 

        { 
            try 

             { 

           throw new InvalidTestScore(); 


          } 

             catch (InvalidTestScore e) 

          { 

            e.printStackTrace(); 

          } 
             break; 

        } 

      } 

       for (int index = 0; index < grade.length; index++) 
       { 
         totGrades += grade[index]; 



       } 

        average = totGrades/grade.length; 


        System.out.print("The average is: " + average); 

    } 

}

公共类InvalidTestScore延伸异常 { 公共InvalidTestScore() { 超级(”错误:0和之间输入一个数字100" ); } }

您可以关闭我的帖子。

您打印计算平均循环内的平均水平。

仅在循环外打印。

您应该在循环中计算总和,然后(循环后)将其除以元素的数量。