Goal: To count the number of times each letter (a-z, both upper and lower case) appears in a file. Lower and upper case versions count as the same letter. So a's and A's both will be counted as a's. I am supposed to use an array

So I have three problems.
1. I'm not sure if I should do letters (a-z) for my array or numbers (0 - 25).
2. Would a while loop be the best? Or a for loop?
3. How do I combine the use of the scanner and the array in the loop?

You need an array of 26 integers. Each element of the array will hold the count of a particular character 'a' through 'z'. You could call the array counters. The counters array is declared and initialized in the LetterInventory class.

counters[0] will hold the count for the character 'a'
counters[1] will hold the count for the character 'b'
.
.
.
counters[25] will hold the count for the character 'z'

Then in the countOccurrences method of that class:

Code :

Make a loop that reads lines from the given Scanner file. Each line is read into a String.
A conventient form of loop can be something like:
while (file.hasNextLine()) {
String line = file.nextLine();
// Do something with the String
}
What is that "something that you do with the String?
Well...
Convert each String read by the Scanner nextLine() method to lower case and then do something like the following
Make a loop that goes through all of the characters in the String.
Inside the loop it goes something like this:
Use the charAt() method to retrieve the current character
Declare an integer variable named x and set x equal to the integer value of the current character minus 'a'.
(That means that 'a' becomes 0, 'b' becomes 1, ... , 'z' becomes 25)
If x is greater than or equal to zero and x is less than the number of elements in the counters array, then
Increment counters[x]
End if
(That means that spaces and punctuation and everything other than a alphabetic characters will be ignored.)

Finally...

The displayTable method would print out the value of each of the counters in some kind of loop like