Reading input from t..

Download Report

Transcript Reading input from t..

Reading input from the console input
Java'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
Java'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:
System.i
n
which represents the console input
The variable System.in is included in every Java program (you
don't need to define it).
Java'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
A 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:
• The variable named System.in
represents the keyboard
• It is too early in the course to explain the notation System.in
• We will explain this after we have covered classes
Java's Scanner library functions
• Fact:
• There is a lot of work that the computer must do to
read in a floating point number
• 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)
Java's Scanner library functions (cont.)
• Webpage of the Java documentation on Scanner class:
http://download.oracle.com/javase/6/docs/api/java/util/Sca
nner.html
Java's Scanner library functions (cont.)
• We will now learn how to use the methods in the Scanner
class to read in floating point numbers
Importing the Scanner class definition
• Recall the Rule of usage of methods in the Java library:
(See:
http://mathcs.emory.edu/~cheung/Courses/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)
Importing the Scanner class definition
(cont.)
• We can use the following import clause to import the Scanner
class:
import
java.util.Scanner;
Preparation 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
Preparation before we can read input from
the keyboard (cont.)
• A Scanner object is constructed using the following statement:
Scanner varName = new
Scanner(System.in);
The name varName is an identifier
Example: constructing a Scanner object named in
Scanner in = new
Scanner(System.in);
Reading 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:
in.nextDouble()
You must save (store) the number read in by "in.nextDouble()"
in a variable with an assignment statement
Reading 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:
Reading 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 !!!
Summary: steps to read in a floating point
number
• This figure summarizes the programming steps to read in a
floating point number:
Example: 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
Reading in a floating point number from the
keyboard (cont.)
x1 = ( -b - Math.sqrt( b*b - 4*a*c ) ) / (2*a);
x2 = ( -b + Math.sqrt( b*b - 4*a*c ) ) / (2*a);
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);
}
}
Reading 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
Good 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.
Good 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
Good programming practice: Prompting
user for input (cont.)
• Example
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
Good 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("Enter b = ");
b = in.nextDouble(); // Read in next number and store in b
System.out.print("Enter c = ");
c = in.nextDouble(); // Read in next number and store in c
x1 = ( -b - Math.sqrt( b*b - 4*a*c ) ) / (2*a);
x2 = ( -b + Math.sqrt( b*b - 4*a*c ) ) / (2*a);
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);
}
}
Reading other types of input from the
keyboard
• The procedure to read other types of inputs from the
keyboard is similar to the one above:
Reading 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.
Reading other types of input from the
keyboard (cont.)
• Reading an integer number from the keyboard: use
nextInt()
Reading other types of input from the
keyboard (cont.)
• Note: you also need to use an int typed variable to store an
integer value !!!