Download presentation
Presentation is loading. Please wait.
1
Evan Korth Scanner class Evan Korth NYU
2
Evan Korth Java 1.5 (5.0)’s Scanner class Prior to Java 1.5 getting input from the console involved multiple steps. Java 1.5 introduced the Scanner class which simplifies console input. It can also be used to read from files and Strings (among other sources). It also can be used for powerful pattern matching – we will not cover pattern matching in this class. Scanner is in the Java.util package. So you must: import java.util.Scanner;
3
Evan Korth Creating Scanner objects We can create a Scanner object by invoking several different constructors. –Scanner(File source) Constructs a new Scanner that produces values scanned from the specified file.ScannerFile –Scanner(InputStream source) Constructs a new Scanner that produces values scanned from the specified input stream.ScannerInputStream –Scanner(Readable source) Constructs a new Scanner that produces values scanned from the specified source.ScannerReadable –Scanner(String source) Constructs a new Scanner that produces values scanned from the specified string.ScannerString I have included 4 of the 8 constructors provided by the API – Source java.sun.com
4
Evan Korth Terminology Token: In computing, a token is a categorized block of text, usually consisting of indivisible characters known as lexemes. A token can look like anything: English, gibberish symbols, anything; it just needs to be a useful part of the structured text.computing lexemes Delimiter: A delimiter is a character used to separate items of data stored on a computer. It is used to tell computers to finish processing one piece of data and move on to the next one. Most delimiters are characters that will not be used in the data, such as spaces or commas. It must also be consistent throughout the data.characterspaces commas Source: wikipedia
5
Evan Korth Scanner class The Scanner class basically parses input from the source into tokens by using delimiters to identify the token boundaries. The default delimiter is whitespace: –[ \t\n\x0B\f\r]
6
Evan Korth System’s static fields static PrintStream err The "standard" error output stream.PrintStreamerr static InputStream in The "standard" input stream.InputStreamin static PrintStream out The "standard" output stream.PrintStreamout Remember: You have been using System.out since your first “Hello World” program. Now we see System.in is an InputStream
7
Evan Korth Scanner Scanner will read a line of input from its source (our examples will be from System.in but we have already seen other sources are possible) Example: Scanner sc = new Scanner (System.in); int i = sc.nextInt(); System.out.println("You entered" + i); This example reads a single int from System.in and outputs it to System.out. It does not check that the user actually entered an int.
8
Evan Korth Next Methods StringString next() Finds and returns the next complete token from this scanner. next boolean nextBoolean() Scans the next token of the input into a boolean value and returns that value. nextBoolean byte nextByte() Scans the next token of the input as a byte. nextByte double nextDouble() Scans the next token of the input as a double. nextDouble float nextFloat() Scans the next token of the input as a float. nextFloat int nextInt() Scans the next token of the input as an int. nextInt StringString nextLine() Advances this scanner past the current line and returns the input that was skipped. nextLine long nextLong() Scans the next token of the input as a long. nextLong short nextShort() Scans the next token of the input as a short. nextShort
9
Evan Korth InputMismatchExceptions InputMismatchException: This exception can be thrown if you try to get the next token using a next method that does not match the type of the token
10
Evan Korth hasNext methods boolean hasNext() Returns true if this scanner has another token in its input. hasNext boolean hasNextBoolean() Returns true if the next token in this scanner's input can be interpreted as a boolean value using a case insensitive pattern created from the string "true|false". hasNextBoolean boolean hasNextByte() Returns true if the next token in this scanner's input can be interpreted as a byte value in the default radix using the nextByte() method. hasNextBytenextByte() boolean hasNextDouble() Returns true if the next token in this scanner's input can be interpreted as a double value using the nextDouble() method. hasNextDoublenextDouble() boolean hasNextFloat() Returns true if the next token in this scanner's input can be interpreted as a float value using the nextFloat() method. hasNextFloatnextFloat() boolean hasNextInt() Returns true if the next token in this scanner's input can be interpreted as an int value in the default radix using the nextInt() method. hasNextIntnextInt() BooleanhasNextLine() Returns true if there is another line in the input of this scanner. hasNextLine boolean hasNextLong() Returns true if the next token in this scanner's input can be interpreted as a long value in the default radix using the nextLong() method. hasNextLongnextLong() boolean hasNextShort() Returns true if the next token in this scanner's input can be interpreted as a short value in the default radix using the nextShort() method. hasNextShortnextShort()
11
Evan Korth Another example Scanner sc = new Scanner (System.in); System.out.print ("Enter first int: "); while (sc.hasNextInt()) { int i = sc.nextInt(); System.out.println("You entered " + i); System.out.print ("Enter another int: "); }
12
Evan Korth Scanner The Scanner class has more powerful abilities. For example, you can: –Change the delimiters –Use regular expressions –Read input in different radixes (radices or bases)
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.