Title: Reading input from the console input
1Reading input from the console input
2Java's console input
- The console is the terminal window that is
running the Java program -
- I.e., that's the terminal window where you type
in the command java ProgramName
3Java's console input
- When a Java program starts running, the Java
runtime system will initialize many variables in
support for the running program. - One of these variables is the Java system
variable - which represents the console input
- The variable System.in is included in every Java
program (you don't need to define it).
System.in
4Java's console input
- A Java program can obtains inputs from the
console through the keyboard - In other words
- The Java system variable System.in represents
the keyboard
5A note on the notation "System.in"
- At this moment in the course, we want to learn
how to read input from the keyboard - All you need to know is
- It is too early in the course to explain the
notation System.in - We will explain this after we have covered
classes
- The variable named System.in represents the
keyboard
6Java's Scanner library functions
- Fact
- The details of what the computer must do to read
in a number will be discussed in CS255 - The Java programming language provides a
collection of methods stored in the Scanner class
that perform read operations - (Remember that a class is a container for
methods)
- There is a lot of work that the computer must do
to read in a floating point number
7Java's Scanner library functions (cont.)
- Webpage of the Java documentation on Scanner
class http//download.oracle.com/javase/6/docs/ap
i/java/util/Scanner.html
8Java's Scanner library functions (cont.)
- We will now learn how to use the methods in the
Scanner class to read in floating point numbers
9Importing the Scanner class definition
- Recall the Rule of usage of methods in the Java
library (See http//mathcs.emory.edu/cheung/Cou
rses/170/Syllabus/04/java-lib.html)
- If a Java program wants to use a method in the
Java library, the Java program must first import
the containing class - All classes in the java.lang package have
already been imported into a Java program - (You can use methods in these classes without the
import clause)
10Importing the Scanner class definition (cont.)
- We can use the following import clause to import
the Scanner class
import java.util.Scanner
11Preparation before we can read input from the
keyboard
- Before a Java program can read input from the
keyboard, the program must " construct a Scanner
object - It is too early to explain what this means... I
will only tell you - how to do it
12Preparation before we can read input from the
keyboard (cont.)
- A Scanner object is constructed using the
following statement - The name varName is an identifier
- Example constructing a Scanner object named in
Scanner varName new Scanner(System.in)
Scanner in new Scanner(System.in)
13Reading in a floating point number from the
keyboard
- After having constructed the Scanner object named
in, you can use the following expression to read
a floating point number from the keyboard - You must save (store) the number read in by
"in.nextDouble()" in a variable with an
assignment statement
in.nextDouble()
14Reading in a floating point number from the
keyboard (cont.)
- What happens inside the computer
- Just like Math.sqrt(..), the method call
in.nextDouble() will invoke (run) a method in
Java's library. - The task performed by in.nextDouble() is to read
a floating point number from the keyboard
15Reading in a floating point number from the
keyboard (cont.)
- If you type in "3.5" on the keyboard at the time
that in.nextDouble() is running, then the call
will return the value 3.5 - The return value will replace the method call
- The input value 3.5 is then stored in the
variable a !!!
16Summary steps to read in a floating point number
- This figure summarizes the programming steps to
read in a floating point number
17Example reading input for the a,b,c-formula
- Programming Example ABC formula
import java.util.Scanner // Import Scanner class
(contains methods // for reading keyboard
input) public class Abc2 public static
void main(String args) double a, b, c, x1,
x2 // Define 5 variable Scanner in new
Scanner(System.in) // Construct a Scanner object
a in.nextDouble() // Read in next number
and store in a b in.nextDouble() // Read in
next number and store in b c in.nextDouble()
// Read in next number and store in c
18Reading in a floating point number from the
keyboard (cont.)
x1 ( -b - Math.sqrt( bb - 4ac ) ) / (2a)
x2 ( -b Math.sqrt( bb - 4ac ) ) / (2a)
System.out.print("a ") System.out.println(a
) System.out.print("b ") System.out.println(
b) System.out.print("c ") System.out.println
(c) System.out.print("x1 ")
System.out.println(x1) System.out.print("x2
") System.out.println(x2)
19Reading in a floating point number from the
keyboard (cont.)
- Example Program (Demo above code)
- Prog file http//mathcs.emory.edu/cheung/Courses
/170/Syllabus/04/Progs/Abc2.java - How to run the program
- Right click on link and save in a scratch
directory - To compile javac Abc2.java
- To run java Abc2
20Good programming practice Prompting user for
input
- The previous program works, but requires the
users to know exactly what to do - In other words
- An unaware user may not know that he/she needs
to enter some input before the program can
perform its task.
21Good programming practice Prompting user for
input (cont.)
- Good programming courtesy
- When the program needs the user to enter input
from the keyboard, it must print out a (short)
prompt message
22Good programming practice Prompting user for
input (cont.)
import java.util.Scanner // Import Scanner
class (contains methods // for reading
keyboard input) public class Abc2
public static void main(String args)
double a, b, c, x1, x2 // Define 5
variable Scanner in new
Scanner(System.in) // Construct a Scanner
object
23Good programming practice Prompting user for
input (cont.)
System.out.print("Enter a ") //
Prompt message a in.nextDouble() // Read
in next number and store in a System.out.print("E
nter b ") b in.nextDouble() // Read in
next number and store in b System.out.print("Ente
r c ") c in.nextDouble() // Read in
next number and store in c x1 ( -b -
Math.sqrt( bb - 4ac ) ) / (2a) x2 ( -b
Math.sqrt( bb - 4ac ) ) / (2a)
System.out.print("a ") System.out.println(a
) System.out.print("b ")
System.out.println(b) System.out.print("c
") System.out.println(c)
System.out.print("x1 ") System.out.println(
x1) System.out.print("x2 ")
System.out.println(x2)
24Reading other types of input from the keyboard
- The procedure to read other types of inputs from
the keyboard is similar to the one above
25Reading other types of input from the keyboard
(cont.)
- The only different is that we need to use a
different method in the Scanner class that read
the correct type of data.
26Reading other types of input from the keyboard
(cont.)
- Reading an integer number from the keyboard use
nextInt()
27Reading other types of input from the keyboard
(cont.)
- Note you also need to use an int typed variable
to store an integer value !!!