GETTING USER INPUT
• There are two basic ways (for now) to get input from the user
JAVA INPUT METHODS • The Scanner class
CSE 114: Computer Science I
Stony Brook University • JOptionPane and showInputDialog()
• Either one is okay for the purposes of this class
TRADE-OFFS
• JOptionPane is slightly easier to use, but you have to convert
the result to a usable form yourself
• Scanner is slightly more complex, but it converts the input to a
SCANNER
usable form for you
• Both options require you to use an import statement to use
utilities that are not built-in to Java
STREAM ILLUSTRATION
User input (hitting Enter after each line):
STREAMS
23
some words
• Java input and output are treated as streams of characters 114.03 more
(actually, bytes) text
to
• A stream is a sequence of data that flows in one direction process
• e.g., keyboard to program, program to display
2 3 \n s o m e w o r d s \n
• Data is processed in first-in, first-out order 1 1 4 . 0 3 m o r e \n t e
x t \n t o \n p r o c e s s \n
BASIC INPUT HOW TO USE SCANNER
• You must include
• In
Java 1.5 or later, use the Scanner class to read from the
keyboard (or other sources) import [Link].*;
• Scanner’s methods return the next value of a given type at the top of your source code file!
• nextLine(), nextInt(), nextDouble(), etc.
• To create a Scanner for use:
• These methods only work if the remaining input begins Scanner myScan = new Scanner([Link]);
with the proper type
• Creates a reference (myScan) to a Scanner object
• Most methods don’t consume newlines!
• Tells Scanner to read from the keyboard ([Link])
• Only nextLine() does this for you
SCANNER EXAMPLE OTHER SCANNER METHODS
• Scanner also provides “lookahead” methods
• hasNext(), hasNextLine(), hasNextInt(), etc.
Scanner s = new Scanner([Link]); • These methods return true if:
[Link](“Enter temperature: ”);
• the input stream contains more data, AND
int temp = [Link](); // read the next characters as an int
• the next value that can be read is of the given type
[Link](“Enter your name: ”);
• This helps you to avoid bugs where you try to read data
String name = [Link](); // read next line as a String
that’s in the wrong format (or not there at all!)
JOPTIONPANE
• Thisapproach pops up a small dialog box asking the user to
JOPTIONPANE type in some input text
• The result is a String containing whatever the user typed
• Start by telling Java where to find the JOptionPane class:
import [Link].*;
USING JOPTIONPANE CONVERTING THE RESULT
• To
actually display the dialog box, call
JOptionPane’s showInputDialog() • showInputDialog() always returns a String
method
• To
get this into a useful format (int, double, etc.), use a
• showInputDialog() takes a wrapper class to convert the String to the desired type
message as its argument
• e.g., [Link]() or [Link]()
• ex. [Link](“123”) returns the int value 123
String text = [Link](“Enter a #:”);
NEXT TIME
• Conditionals (if statements)
• Switch statements
• Loops