15,882,017 members
See more:
In my coding class we learning to print out the average of a set of numbers from an array list. I know how to print the average of a single array but I am having trouble with printing out the average of a double array. The context of my problem is to ask the user for height and width of the array, then ask for a minimum and maximum number. Where it will randomly find numbers and print them out however many times the height and width was given. Now I have to calculate and display the rainfall for the entire array. The whole code works except when I try to do this. Can anyone help me. I have a problem showing I know how to print out the average of a specific set of numbers, but I can't seem to figure out how to do it in my homework. Should I be using the .size() method in my for loops to figure out the average? Thanks

What I have tried:

From the problem that works:
```import java.util.ArrayList;
import java.util.Scanner;

public class ArrayListAverage {
public static void main (String [] args) {
final int NUM_ELEMENTS = 8;
Scanner scnr = new Scanner(System.in);
ArrayList<Double> userNums = new ArrayList<Double>(); // User numbers
Double sumVal = 0.0;
Double averageVal = 0.0; // Computed average
int i = 0; // Loop index

System.out.println("Enter " + NUM_ELEMENTS + " numbers...");
for (i = 0; i < NUM_ELEMENTS; ++i) {
System.out.print("Number " + (i + 1) + ": ");
}

// Determine average value
sumVal = 0.0;
for (i = 0; i < NUM_ELEMENTS; ++i) {
sumVal = sumVal + userNums.get(i); // Calculate sum of all numbers
}

averageVal = sumVal / NUM_ELEMENTS; // Calculate average

System.out.println("Average: " + averageVal);

return;
}
}```

The code that doesn't work:

```import java.util.Scanner;
import java.util.Random;
public class App {

public static void main(String[] args) {
Scanner scan = new Scanner(System.in);

int userHeight;
int userWidth;
int userMin;
int userMax;

System.out.println("Please enter in a height and width of array.");
System.out.print("Height: ");
userHeight = scan.nextInt();
System.out.print("Width: ");
userWidth = scan.nextInt();

System.out.println("Please enter in the minimum and maximum rainfall value.");
System.out.print("Minimum rainfall: ");
userMin = scan.nextInt();
System.out.print("Maximum rainfall: ");
userMax = scan.nextInt();

int [][] rainMap = new int [userHeight][userWidth];

for (int i = 0; i < userHeight; i++)
{
for (int j = 0; j < userWidth; j++)
{
Random rand = new Random();
int randomNum = rand.nextInt((userMax - userMin) + 1) + userMin;
rainMap[i][j] = randomNum;
}
}

for (int i = 0; i < userHeight; i++)
{
for (int j = 0; j < userWidth; j++)
{
System.out.print(rainMap[i][j]);
}
System.out.println("");
}

//finding average
double total = 0;
double sumValI = 0;
//double sumValJ = 0;
double average = 0.0;
for (int i = 0; i < userHeight; i++)
{
for (int j = 0; j < userWidth; j++)
{
sumValI = sumValI + rainMap.get((i)(j));
}
}
total = userHeight * userWidth;
average = sumValI / total;
System.out.println("Average rainfall: " + average);
}

}```
Posted
Updated 19-Oct-17 22:37pm
v2

## Solution 1

Quote:
I have a problem showing I know how to print out the average of a specific set of numbers, but I can't seem to figure out how to do it in my homework.

There is a tool that allow you to see what your code is doing, its name is debugger. It is also a great learning tool because it show you reality and you can see which expectation match reality.
When you don't understand what your code is doing or why it does what it does, the answer is debugger.
Use the debugger to see what your code is doing. Just set a breakpoint and see your code performing, the debugger allow you to execute lines 1 by 1 and to inspect variables as it execute.

Debugger - Wikipedia, the free encyclopedia[^]
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]
The debugger is here to show you what your code is doing and your task is to compare with what it should do.
There is no magic in the debugger, it don't find bugs, it just help you to. When the code don't do what is expected, you are close to a bug.

## Solution 2

You cannot access the array values in the way you have coded - the compiler error message should have given you a clue.
Java
`sumValI = sumValI + rainMap.get((i)(j));`

See Array (Java Platform SE 7 )[^].

You just need to do it the same way as in the loop that prints the values:
Java
```sumValI = sumValI + rainMap[i][j];
```

Incidentally, why not do this summing as you print each item, rather than in a separate loop?

Top Experts
Last 24hrsThis month
 Richard MacCutchan 80 Pete O'Hanlon 70 Rick York 20 Gerardo Gamo 10 KarstenK 10
 Pete O'Hanlon 1,940 OriginalGriff 1,415 Graeme_Grant 895 Richard Deeming 853 Dave Kreskowiak 694

CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900