Programming Exercises
For Chapter 10
THIS PAGE CONTAINS programming exercises based on
material from Chapter 10 of this on-line
Java textbook. Each exercise has a link to a discussion of one possible solution of that
exercise.
Exercise 10.1:
The WordList program from Section 10.3 reads a text file
and makes an alphabetical list of all the words in that file.
The list of words is output to another file. Improve the
program so that it also keeps track of the number of times that
each word occurs in the file. Write two lists to the output
file. The first list contains the words in alphabetical order.
The number of times that the word occurred in the file should
be listed along with the word. Then write a second list to the
output file in which the words are sorted according to the number of
times that they occurred in the files. The word that occurred
most often should be listed first.
See the solution!
Exercise 10.2:
Write a program that will count the number of lines in each
file that is specified on the command line. Assume that the
files are text files. Note that multiple files can be specified,
as in "java LineCounts file1.txt file2.txt file3.txt". Write
each file name, along with the number of lines in that file,
to standard output. If an error occurs while trying to read from
one of the files, you should print an error message for that file,
but you should still process all the remaining files.
See the solution!
Exercise 10.3:
Section 8.4 presented a PhoneDirectory
class as an example. A PhoneDirectory holds a list of names
and associated phone numbers. But a phone directory is pretty useless
unless the data in the directory can be saved permanently -- that is, in a file.
Write a phone directory program that keeps its list of names and
phone numbers in a file. The user of the program should be able
to look up a name in the directory to find the associated phone
number. The user should also be able to make changes to the
data in the directory. Every time the program starts up, it
should read the data from the file. Before the program terminates,
if the data has been changed while the program was running,
the file should be re-written with the new data. Designing a
user interface for the program is part of the exercise.
See the solution!
Exercise 10.4:
For this exercise, you will write a network server program.
The program is a simple file server that makes a collection
of files available for transmission to clients. When the
server starts up, it needs to know the name of the
directory that contains the collection of files. This
information can be provided as a command-line argument. You can
assume that the directory contains only regular files (that is, it does not
contain any sub-directories). You can also assume that all the files are
text files.
When a client connects to the server, the server
first reads a one-line command from the client. The command
can be the string "index". In this case, the server responds by sending a
list of names of all the files that are available on the server.
Or the command can be of the form "get <file>", where
<file> is a file name. The server checks whether the
requested file actually exists. If so, it first sends
the word "ok" as a message to the client. Then it sends the contents of
the file and closes the connection. Otherwise, it sends
the word "error" to the client and closes the connection.
Ideally, your server should start a separate thread to handle
each connection request. However, if you don't want to deal with
threads you can just call a subroutine to handle the request.
See the DirectoryList example in
Section 10.2 for help with the problem of getting the list of
files in the directory.
See the solution!
Exercise 10.5:
Write a client program for the server from Exercise 10.4.
Design a user interface that will let the user do at least
two things: Get a list of files that are available on the
server and display the list on standard output. Get a copy of a
specified file from the server and save it to a local
file (on the computer where the client is running).
See the solution!