The local Kids' League coach keeps
some of the baseball team statistics in a text file organized as follows: each
line of the file contains the name of the player followed by a list of symbols
indicating what happened on each at bat for the player. The letter h indicates
a hit, o an out, w a walk, and s a sacrifice fly. Each item on the line is separated
by a comma. There are no blank spaces except in the player name. So, for example
the file could look as follows:
The file BaseballStats.java
contains the skeleton of a program thats reads and processes a file in this
format. Study the program and note that three Scanner objects are declared.
- One scanner (scan) is used to
read in a file name from standard input.
- The file name is then used to
create a scanner (fileScan) to operate on that file.
- A third scanner (lineScan) will
be used to parse each line in the file.
Also note that the main method throws
an IOException. This is needed in case there is a problem opening the file.
Exceptions are discussed in detail in Chapter 10.
Complete the program as follows:
- First add a while loop that reads
each line in the file and prints out each part (name, then each at bat, without
the commas) in a way similar to the URLDissector program in Listing 5.11 of
the text. In particular inside the loop you need to
- read the next line from the
- create a comma delimited scanner
(lineScan) to parse the line
- read and print the name of
the player, and finally,
- have a loop that prints each
at bat code.
- Compile and run the program to
be sure it works.
- Now modify the inner loop that
parses a line in the file so that instead of printing each part it counts
(separately) the number of hits, outs, walks, and sacrifices. Each of these
summary statistics, as well as the batting average, should be printed for
each player. Recall that the batting average is the number of hits divided
by the total number of hits and outs.
- Test the program on the file stats.dat
and stats2.dat .