Java Reference
In-Depth Information
Code 12.23
Reading integer data
with Scanner
public int [] readInts(String filename)
int [] data;
try {
List<Integer> values = new ArrayList<Integer>();
Scanner scanner = new Scanner( new File(filename));
while (scanner.hasNextInt()) {
// Copy them to an array of the exact size.
data = new int [values.size()];
Iterator<Integer> it = values.iterator();
int i = 0;
while (it.hasNext()) {
data[i] =;
catch (FileNotFoundException e) {
System.out.println( "Cannot find file: " + filename);
data = new int [0];
return data;
Note that this method does not guarantee to read the whole file. The Scanner 's hasNextInt
method that controls the loop will return false if it encounters text in the file that does not
appear to be part of an integer. At that point, the data gathering will be terminated. In fact, it
is perfectly possible to mix calls to the different next methods when parsing a complete file,
where the data it contains is to be interpreted as consisting of mixed types.
Another common use of Scanner is to read input from the “terminal” connected to a program.
We have regularly used calls to the print and println methods of System.out to write
text to the BlueJ terminal window. System.out is of type and maps
to what is often called the standard output destination. Similarly, there is a corresponding
standard input source available as , which is of type . An
InputStream is not normally used directly when it is necessary to read user input from the ter-
minal, because it delivers input one character at a time. Instead, is usually passed
to the constructor of a Scanner . The InputReader class in the tech-support-complete project
of Chapter 5 uses this approach to read questions from the user:
Scanner reader = new Scanner(;
. . . intervening code omitted . . .
String inputLine = reader.nextLine();
The nextLine method of Scanner returns the next complete line of input from standard input
(without including the final newline character).
Search WWH ::

Custom Search