Example 1-12
shows yet another program for computing factorials. Unlike Example 1-11, however, it doesn’t
just compute one factorial and quit. Instead, it prompts the user to
enter a number, reads that number, prints its factorial, and then
loops and asks the user to enter another number. The most interesting
thing about this example is the technique it uses to read user input
from the keyboard. It uses the readLine(
)
method of a BufferedReader
object to do this. The line
that creates the BufferedReader
may
look confusing. For now, take it on faith that it works; you don’t
really need to understand how it works until we reach Chapter 3. Another feature of note in
Example 1-12 is the use of
the equals( )
method of the
String
object line
to check whether the user has typed
“quit”.
The code for parsing the user’s input and computing and
printing the factorial is the same as in Example 1-11, and again, it is
enclosed within a try
clause. In
Example 1-12, however, there
is only a single catch
clause to
handle the possible exceptions. This one handles any exception object
of type Exception
. Exception
is the superclass of all exception
types, so this one catch
clause is
invoked no matter what type of exception is thrown.
Example 1-12. FactQuoter.java
package je3.basics; import java.io.*; // Import all classes in java.io package. Saves typing. /** * This program displays factorials as the user enters values interactively **/ public class FactQuoter { public static void main(String[ ] args) throws IOException { // This is how we set things up to read lines of text from the user. BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); // Loop forever for(;;) { // Display a prompt to the user System.out.print("FactQuoter> "); // Read a line from the user String line = in.readLine( ); // If we reach the end-of-file, // or if the user types "quit", then quit if ((line == null) || line.equals("quit")) break; // Try to parse the line, and compute and print the factorial try { int x = Integer.parseInt(line); System.out.println(x + "! = " + Factorial4.factorial(x)); } // If anything goes wrong, display a generic error message catch(Exception e) { System.out.println("Invalid Input"); } } } }
Get Java Examples in a Nutshell, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.