Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Reading Input Overview Introduction to Wrapper classes. Introduction to Exceptions (Java run-time errors). Console input using the BufferedReader class. 1 WRAPPER CLASSES Java uses primitive types, such as int and char, for performance reasons. However, there are times when a programmer needs to create an object representation for one of these primitive types. Java provides a Wrapper class for each of the primitive types. All these classes are in the java.lang package: Primitive type Wrapper class boolean byte char Boolean Byte Character short int long float Short Integer Long Float double Double 2 WRAPPER CLASSES (cont.) Wrapper classes are used to provide constants and general methods for the primitive data types. Converting strings into numbers Each of the Wrapper classes Byte, Short, Integer, Long, Float, and Double has a method to convert a string representation of a number of the corresponding primitive type into its numeric format: Wrapper class Parse method Byte parseByte(string) Short parseShort(string) Integer parseInt(string) Long parseLong(string) Float parseFloat(string) Double parseDouble(string) Examples: int numStudents = Integer.parseInt(“500”) ; String inputLine ; . . . double studentGPA = Double.parseDouble( inputLine) ; 3 INTRODUCTION TO EXCEPTIONS A program may have one or more of three types of errors: 1. Syntax errors or Compile-time errors. 2. Run-time or Execution-time errors. 3. Logic errors. A Java exception is an object that describes a runtime error condition that has occurred in a piece of Java code or in the Java run-time System. All Java exception classes are subclasses of the Throwable class. Most exception classes are defined in the java.io and java.lang packages. other packages like: java.util, java.awt, java.net, java.text also define exception classes. Catching and throwing an exception A piece of Java code containing statements to handle an exception is said to catch the exception; otherwise it is said to throw that exception. An exception that is not caught by any portion of a Java program will ultimately be caught by the default exception handler. The default exception handler displays a string describing the exception. 4 INTRODUCTION TO EXCEPTIONS (cont.) A partial hierarchy of Java exceptions: Throwable Exception Error ... . . . IOException RuntimeException . . . . . . IllegalArgumentException NullPointerException NumberFormatException ArithmeticException 5 INTRODUCTION TO EXCEPTIONS (cont.) Checked and Unchecked exceptions Java exceptions are classified into two categories: checked exceptions and unchecked exceptions. Any exception that derives from the class Error or the class RuntimeException is an unchecked exception. All other exceptions are checked exceptions. The Java rule for thrown exceptions: A METHOD MUST DECLARE ALL CHECKED EXCEPTIONS IT MAY THROW, OTHERWISE THE JAVA COMPILER WILL ISSUE AN ERROR MESSAGE. The throws clause A method declares that it may throw an exception by a throws clause in the method header: access-specifier return-type method-name(parameter-list) throws exception-list { . . . } 6 INTRODUCTION TO EXCEPTIONS (cont.) Example: import java.io.* ; public static void main(String[ ] args) throws IOException { . . . } One or more statements that may throw an IOException that is not handled. Note: When a method declares that it throws an exception, then it may throw an exception of that class or any of its subclasses. 7 CONSOLE INPUT USING BufferedReader CLASS In Java I/O is handled by streams. Input stream An input stream is an object that takes data from an input source and delivers that data to a program. Output stream An output stream is an object that delivers data to an output destination. In Java, console input is usually accomplished by reading from the input stream System.in of the class java.lang.System System.in represents the standard input stream (i.e., the keyboard). Unfortunately, System.in has no methods for reading characters, strings, or numbers. It has a read method to read a single byte at a time.[Java uses Unicode in which each character is two bytes] To be able to read characters, strings, or numbers, System.in must be wrapped in other objects. 8 CONSOLE INPUT USING BufferedReader CLASS (cont.) To turn System.in into a Reader object (i.e., an object that is capable of reading one character at a time), wrap System.in in an InputStreamReader object: InputStreamReader reader = new InputStreamReader(System.in) ; To turn the object referenced by reader into an object with the ability to read entire lines at a time, wrap the object in a BufferedReader object: BufferedReader stdin = new BufferedReader(reader) ; The steps of turning System.in into a BufferedReader object can be combined into a single statement: BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)) ; Note: Both the BufferedReader class and the InputStreamReader class are defined in the java.io package. 9 CONSOLE INPUT USING BufferedReader CLASS (cont.) The read( ) and readLine( ) methods The object to which stdin refers to contains a read( ) method that reads one character at a time, and returns its integer code in the range 0 to 65535: int read( ) throws IOException It also contains a readLine( ) method that reads one input line at a time, and returns it as a string: String readLine( ) throws IOException Example: Reading a string import java.io.*; public class ReadString { public static void main(String[ ] args) throws IOException { BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)) ; System.out.println(“Enter a line of text:”) ; String message = stdin.readLine( ) ; System.out.println(“You entered: ” + message ) ; } } 10 CONSOLE INPUT USING BufferedReader CLASS (cont.) Example: Reading a character char ch = (char) stdin.read( ) ; Numeric input The Java library contains no classes to read numbers directly. One way of processing numeric input is to read it as a string using the readLine( ) method then convert it to its corresponding numeric value, using the parse method of an appropriate Wrapper class. Example: String inputLine = stdin.readLine( ) ; int numStudents = Integer.parseInt(inputLine) ; double speed = Double.parseDouble(stdin.readLine( )) ; float height = Float.parseFloat(stdin.readLine( ).trim( )); Note: Each parse method can throw an unchecked NumberFormatException 11