Что происходит внутри цикла for с оценкой и суммой? Я понятия не имею, что он делает - PullRequest
0 голосов
/ 02 октября 2019

Это программа, которая вычисляет среднее значение теста пользователя на основе того, сколько входных данных он хочет. Но я не знаю, что происходит внутри цикла for и что это значит. Оценка и сумма.

   System.out.println("Welcome, please type your first name. ");
   String name = scan.nextLine();
   System.out.println("Welcome, please type your last name. ");
   String last = scan.nextLine();
   int numberOfTests;
   System.out.println("How many tests would you like the average of?");
   numberOfTests = scan.nextInt();

   while(numberOfTests<0)
   {
        System.out.println("Invalid input.");
        System.out.println("How many tests would you like the average 
        of?");
        numberOfTests = scan.nextInt();
   }
   double sum = 0;
   double grade;
   System.out.println("Enter " + numberOfTests + " scores.");
   for(int i = 0;i<numberOfTests;i++)
   {
    grade = scan.nextDouble();
    sum += grade;
   }
   double average = (sum/numberOfTests);
   System.out.println("Okay " + name.charAt(0) + last.charAt(0) + ", your 
   average score is " + (average));
   System.out.print("Your letter grade is ");

Программа работает.

Ответы [ 4 ]

0 голосов
/ 02 октября 2019
numberOfTests = scan.nextInt();

Здесь спрашивают, сколько тестов они хотят ввести в оценки. Если входное значение меньше 0, запрашиваем значение снова. ниже для цикла, используемого для считывания количества марок на основе предыдущего входного тестового значения и добавления всех вводимых меток

for(int i = 0;i<numberOfTests;i++)
   {`enter code here`
}

ниже выписка вычисляет средние оценки (простой расчет общих оценок / количество тестов)

double average = (sum/numberOfTests);
0 голосов
/ 02 октября 2019

Похоже, scan является экземпляром java.util.Scanner. Этот класс используется для чтения из пользовательского ввода, поэтому grade = scan.nextDouble() читает следующие double из пользовательского ввода.

Тогда sum += grade эквивалентно sum = sum + grade;он добавляет grade, который пользователь вводит в общую оценку (sum).

Таким образом, цикл запрашивает numberOfTests входных данных от пользователя, и добавляет их все вместе в sum.

Подробнее о том, как читается ввод, смотрите в документации по Scannner#nextDouble().

0 голосов
/ 02 октября 2019

Что делает этот код, он просит вас ввести числа в соответствии с общим количеством numberOfTests. Имея, i = 0 вы вводите 2. i = 1 вы вводите 3. И переменная суммы будет накапливаться: 2 + 3.

System.out.println("Enter " + numberOfTests + " scores.");
for(int i = 0;i<numberOfTests;i++){
    grade = scan.nextDouble();
    sum += grade;
} 

В конце сумма будет равна 5.

И, наконец,

double average = (sum/numberOfTests);

average = 5/2 равно 2,5.

0 голосов
/ 02 октября 2019
grade = scan.nextDouble();

Это просит пользователя ввести оценку (двойное число типа)

sum += grade;

Затем для каждой итерации входная оценка добавляется к сумме. Таким образом, после numberOfTests итераций сумма будет содержать сумму numberOfTests оценок. Как уже упоминалось @Goion в комментариях, sum += grade; - это в основном sum = sum + grade; Как только у вас есть сумма, вы можете разделить ее на numberOfTests, чтобы получить среднее значение.

Цикл for используется здесь для вычислениясумма всех оценок.

...