Jerstern
Jerstern

Reputation: 13

java loop array using do...while

This program should take a user defined number, create an array of that size and let the user input the elements - which are grades - using a do..while loop. The program then needs to display all grades entered from lowest to highest, accumulate the grades, and find the average.

My output isn't displaying the entered grades correctly (if I enter 10,20,30, it displays 00,10,20) and I can't figure out what I'm doing wrong. Any help, please?

import java.util.Arrays;
import java.util.Scanner;

public class LoopArray
{
    public static void main(String[] arg)
    {
        Scanner keyboard = new Scanner(System.in);

        int count = 0;
        double totalAverage = 0;
        double gradesTotal = 0;

        System.out.println("Please input the number of grades you would like to submit for an average: ");
        int numberOfGrades = keyboard.nextInt();                 

        int[] studentScores = new int[numberOfGrades];

        do
        {
            System.out.println("Please enter grade for averaging: ");
            int inputGrade = keyboard.nextInt();
            count++;
            gradesTotal += inputGrade;

        } while (count < numberOfGrades);

        Arrays.sort(studentScores);

        for(count=0; count < studentScores.length; count++)
        {
           System.out.println("Grades entered were: " + count + studentScores[count]);
        }

        totalAverage = gradesTotal / numberOfGrades;
        System.out.println("The total of all grades entered is: " + gradesTotal);
        System.out.println("The average of grades entered is: " + totalAverage);

    }
}

Upvotes: 1

Views: 1955

Answers (4)

Faraz
Faraz

Reputation: 6265

You are not putting any value inside the array. You need to add this to your do part of the loop studentScores[count] = inputGrade; Now your do while loop should look like this:

do
    {
        System.out.println("Please enter grade for averaging: ");
        int inputGrade = keyboard.nextInt();
        studentScores[count] = inputGrade;
        count++;
        gradesTotal += inputGrade;

    } while (count < numberOfGrades);

Also, inside your last for-loop, you are printing extra info. Just remove that count from System.out.println

 System.out.println("Grades entered were: " + studentScores[count]);

Anything you don't understand let me know thanks

Upvotes: 0

achabahe
achabahe

Reputation: 2565

you forgot to populate the array using the gardes entered

 do
    {
        System.out.println("Please enter grade for averaging: ");
        int inputGrade = keyboard.nextInt();
        studentScores[count]=inputGrade;
        count++;
        gradesTotal += inputGrade;

    } while (count < numberOfGrades);

Upvotes: 0

Pshemo
Pshemo

Reputation: 124225

Result

Grades entered were: 00
Grades entered were: 10
Grades entered were: 20

is generated with

System.out.println("Grades entered were: " + count + studentScores[count]);

So last number in each line is pair representing count + studentScores[count]. This means that:

  • 00 -> at position 0 array studentScores stores 0.
  • 10 -> at position 1 array studentScores stores 0
  • 20 -> at position 2 array studentScores stores 0

Which means you didn't fill your studentScores array with values from user.

Upvotes: 1

Manh Le
Manh Le

Reputation: 1650

Because count start from 0. You should check it.

Upvotes: 0

Related Questions