# Why won’t the program include the first input from the user in the calculation of the average?

This code is meant to output an average of -1 if the first value entered by the user is -1. If the value entered is not -1, then it will calculate the average of the given values, and it will stop when the value -1 is entered and it will be the stopping signal for the program. The task is to modify an existing DoWhile loop – which I have done.

Now, after having written the code, I can’t seem to understand why the program isn’t including the first input from the user, for the calculation of the average.

```Scanner input = new Scanner(System.in);

int studentCount = 0;

final int STOP = -1;

System.out.printf("nEnter a grade (%d to finish): ", STOP);
{
studentCount++;
}
else
do
{
System.out.printf("nEnter a grade (%d to finish): ", STOP);

{
studentCount++;
}

System.out.printf("The average obtained is %.1fn", average);
```

OUTPUT:

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

OUTPUT 2:

```Enter a grade (-1 to finish): 2

Enter a grade (-1 to finish): -1

The average obtained is NaN
```

Image of Compiled Code and Run

Code

main issiue is here:

```   final int STOP = -1;

System.out.printf("nEnter a grade (%d to finish): ", STOP);
{
studentCount++;
}
```

here you read input, and just check if its STOP, bud you do nothing with input if isnt STOP in next

```else
do
{
System.out.printf("nEnter a grade (%d to finish): ", STOP);
```

you again read input and then process it if isnt STOP and you lose your first input

solution by one cycle:

```do
{
System.out.printf("nEnter a grade (%d to finish): ", STOP);