Этот код предназначен для вывода среднего значения -1, если первое введенное пользователем значение равно -1.Если введенное значение не равно -1, то оно вычислит среднее из заданных значений и остановится, когда будет введено значение -1, и станет сигналом остановки программы.Задача состоит в том, чтобы изменить существующий цикл DoWhile - что я и сделал.
Теперь, после написания кода, я не могу понять, почему программа не включает первый ввод от пользователя,для расчета среднего.
Scanner input = new Scanner(System.in);
float grade;
float sumGrades, average;
int studentCount = 0;
sumGrades = 0;
final int STOP = -1;
System.out.printf("\nEnter a grade (%d to finish): ", STOP);
grade = input.nextFloat();
if(grade == STOP)
{
sumGrades = sumGrades + grade;
studentCount++;
}
else
do
{
System.out.printf("\nEnter a grade (%d to finish): ", STOP);
grade = input.nextFloat();
if(grade != STOP)
{
sumGrades = sumGrades + grade;
studentCount++;
}
} while(grade != STOP);
average = sumGrades / studentCount;
System.out.printf("The average obtained is %.1f\n", average);
ВЫХОД:
Enter a grade (-1 to finish): 2
Enter a grade (-1 to finish): 3
Enter a grade (-1 to finish): 4
Enter a grade (-1 to finish): 5
Enter a grade (-1 to finish): 2
Enter a grade (-1 to finish): 3
Enter a grade (-1 to finish): -1
The average obtained is 3.4
ВЫХОД 2:
Enter a grade (-1 to finish): 2
Enter a grade (-1 to finish): -1
The average obtained is NaN
Изображение скомпилированного кода и прогона
Код