2011-02-22 3 views
1

프로그램을 실행하고 0에서 100 사이의 숫자를 선택하면 내 대답이 잘못 인쇄됩니다.내 프로그램 print 문이 잘못되었습니다

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

+4

'시도해보십시오. 새 Ex(); } catch (Ex e) {e.printStackTrace()}는 내가 본 예외 중 가장 심각하고 마음을 괴롭 히는 중대한 위반 중 하나 여야합니다. 또한 포맷팅은 공백을 현명하게 사용하면 가독성을 높일 수 있지만, 과용 할 수는 있습니다. – delnan

+0

내부 루프를 살펴보십시오. 해당 루프를 실행할 때마다 인쇄하고 있습니다. 루프가 완료되면 외부로 인쇄해야합니다. – Troggy

답변

0

합계를 계산하는 문을 루프 내부에서 외부로 이동하여 작동합니다.

내 새 코드는입니다.

import java.util.Scanner; 0 사이의 숫자를 입력 :

공용 클래스 InvalidTestScore는 예외 { 공공 InvalidTestScore() { 슈퍼 ("오류가 확장

공용 클래스 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); 

    } 

} 100 "); } }

내 게시물을 닫을 수 있습니다.

+2

스택 오버플로는 질문/응답 형식으로 설정됩니다. 원래 질문을 편집하고 질문에 "새 대답 추가"가 아닌 새로운 정보를 추가해야합니다. Joachim Sauer가 한 것처럼 문제를 해결 한 대답을 선택해야합니다. 자세한 내용은 [FAQ] (http://stackoverflow.com/faq) 및 [About] (http://stackoverflow.com/about)을 참조하십시오. – Troggy

3

Java 콘솔 당신은 평균을 계산 루프 내부의 평균을 인쇄 할 수 있습니다.

루프 외부에서만 인쇄하십시오.

1

루프에서 sum을 계산 한 다음 루프 이후에 요소 수로 나누어야합니다.

관련 문제