So ive been trying to get an average of this array needed, and I seem to be having trouble with it. So far, my current code just adds the numbers up, but doesnt really average them out at all:

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

public class Grades {
	
	public static void main (String[] args)
	{
		double result = 0;
		Scanner scan = new Scanner(System.in);
		
		float[] grades = new float[100];
		
		for (int i = 0; i < grades.length; i++) {
			System.out.print("Enter a grade between 0.0 - 100.0 (enter -1 to quit): ");
			grades[i] = scan.nextFloat();
			if(grades[i] == -1)break;
			result = result + grades[i];
	
		}
		System.out.println("Average of Grades: " + result / grades.length);
		
}
}

and the result is as follows:

Enter a grade between 0.0 - 100.0 (enter -1 to quit): 30.0
Enter a grade between 0.0 - 100.0 (enter -1 to quit): 50.0
Enter a grade between 0.0 - 100.0 (enter -1 to quit): 60.0
Enter a grade between 0.0 - 100.0 (enter -1 to quit): -1
Average of Grades: 1.4

any help would be appreciated.

Recommended Answers

All 8 Replies

You are dividing by the length of the grades array, but not all of those elements have a value. You need to divide by the actual number of entries the user has added.

How would I go about doing that? (sorry, noobie programmer)

Seems like counting them might be useful?

I mean is there a way to count the number of grades entered? I can enter however many I want up to 100, but im clueless on how to get it to see the amount of grades that were entered.

Member Avatar for hfx642

30 + 50 + 60 = 140
140 / 100 (the number of elements in your array) = 1.4
Keep track of how many grades are being entered.
Line 12: int count = 0;
Line 18: count++;
Line 20: result / count

> im clueless on how to get it to see the amount of grades that were entered
Seems like a fairly simple task for a variable.

Edit: Ah, well so much for letting you see the solution for yourself, since hfx642 has decided to just hand you a fix.

Define an int as a counter, then add one to a counter every time a new number is entered. Look at about line 16 to do this

    double[] grades = new double[100];

        System.out.print("Enter a grade between 0.0 - 100.0 (enter -1 to quit): ");
    System.out.println();

    double sum = 0;
    double ave = 0;


    for (int i = 0; i < grades.length; i++)
    {           grades[i] = input.nextDouble();




        if(grades[i] == -1)
        {
            break;
        }

        sum = sum + grades[i];
        ave = sum / (i+1);
    }

    System.out.println("The Average the of Grades: " + ave);
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.