В моих программах напечатано неверное заявление - PullRequest
1 голос
/ 22 февраля 2011

Когда я запускаю свою программу и выбираю число от 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");
    }
}

Ответы [ 3 ]

3 голосов
/ 22 февраля 2011

Вы печатаете среднее значение внутри цикла, которое вычисляет среднее значение.

Распечатываете его только вне цикла.

1 голос
/ 22 февраля 2011

Вы должны вычислить сумму в цикле, а затем (после цикла) разделить ее на количество элементов.

0 голосов
/ 22 февраля 2011

Я перемещаю оператор, который вычисляет сумму из цикла во внешнюю сторону, которая работает.

Мой новый код:

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 extends Exception {public InvalidTestScore () {super ("Ошибка: введите число от 0 до100" );}}

Вы можете закрыть мой пост.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...