270 likes | 434 Views
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.
E N D
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: which represents the console input The variable System.in is included in every Java program (you don't need to define it). System.in
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: • 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.inrepresents the keyboard
Java'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
Java's Scanner library functions (cont.) • Webpage of the Java documentation on Scanner class: http://download.oracle.com/javase/6/docs/api/java/util/Scanner.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 firstimport 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: 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);
Reading in a floating point number from the keyboard • Afterhaving constructed the Scanner object named in, you can use the following expression to read a floating point number from the keyboard: You mustsave (store) the number read in by "in.nextDouble()" in a variable with an assignment statement in.nextDouble()
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 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 • Programming Example: ABC formula
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 !!!