[an error occurred while processing this directive]
Except where otherwise noted, the contents of this document are Copyright 2010 Stuart Reges and Marty Stepp.
lab document created by Whitaker Brand and Marty Stepp
Goals for today:
Scanner
and File
objects to read input data from files
Scanner
breaks input into tokens
Scanner
Methods
To use these methods, you need a variable of type Scanner
:
Scanner fileScanner = new Scanner(new File("input.txt")); String theNextString = fileScanner.next();
Method name | Outcome |
---|---|
next()
|
reads and returns the next token as a String
|
nextLine()
|
reads and returns as a String all the characters up to (but excluding) the next new line ('\n')
|
nextInt()
|
reads and returns the next token as an int , if possible.
|
nextDouble()
|
reads and returns the next token as double , if possible.
|
hasNext()
|
returns whether there is still a token in the Scanner
|
hasNextLine()
|
returns whether there is still at least one line left to be read in the Scanner
|
hasNextInt()
|
returns whether the next token can be read as an int
|
hasNextDouble()
|
returns whether the next token can be read as an double
|
How many tokens are in the following String
? 3
welcome...to the matrix.
What are the tokens that the String
breaks up into?
How many tokens are in the following String
? 9
in fourteen-hundred 92\ncolumbus sailed the ocean blue :)
What are the tokens that the String
breaks up into?
For the next several questions, consider a file called readme.txt
that has the following contents:
6.7 This file has several input lines. 10 20
What would be the output from the following code when it is run on the readme.txt
file?
Scanner input = new Scanner(new File("readme.txt")); int count = 0; while (input.hasNextLine()) { System.out.println("input: " + input.nextLine()); count++; } System.out.println(count + " total");
runningSum
Write a static method called runningSum
that accepts as a parameter a Scanner
holding a sequence of real numbers and that outputs the running sum of the numbers followed by the maximum running sum. For example if the Scanner contains the following data:
3.25 4.5 -8.25 7.25 3.5 4.25 -6.5 5.25
your method should produce the following output:
running sum = 3.25 7.75 -0.5 6.75 10.25 14.5 8.0 13.25 max sum = 14.5
Click on the check-mark above to try to solve this problem in Practice-it!
flipLines
Write a static method named flipLines
that accepts as its parameter a Scanner
for an input file and that writes to the console the same file's contents with successive pairs of lines reversed in order. For example, if the input file contains the following text:
Twas brillig and the slithy toves did gyre and gimble in the wabe. All mimsey were the borogroves, and the mome raths outgrabe. "Beware the Jabberwock, my son, the jaws that bite, the claws that catch, Beware the JubJub bird and shun the frumious bandersnatch."
your method should produce the following output:
did gyre and gimble in the wabe. Twas brillig and the slithy toves and the mome raths outgrabe. All mimsey were the borogroves, "Beware the Jabberwock, my son, Beware the JubJub bird and shun the jaws that bite, the claws that catch, the frumious bandersnatch."
Click on the check-mark above to try to solve this problem in Practice-it!
coinFlip
Write a static method named coinFlip
that accepts as its parameter a Scanner
for an input file. Assume that the input file data represents results of sets of coin flips that are either heads (H) or tails (T). Your method should consider each line to be a separate set of coin flips and should output to the console the number of heads and the percentage of heads in that line. If this percentage is more than 50%, you should print a "You win" message. For example, consider the following input file:
H T H H T T t t T h H h
For the input above, your method should produce the following output:
3 heads (60.0%) You win! 2 heads (33.3%) 1 heads (100.0%) You win!
Click on the check-mark above to try to solve this problem in Practice-it!