Using Java's Math & Scanner class Java's Mathematical functions (methods) (1) Java's Mathematical functions (methods) (2) • Unlike a calculator that always shows the result of a computation on its display.... • A computer will only show the result of a computation when it is told !!! Java's Mathematical functions (methods) (3) • A computed value is not printed: If you want to print a computed value, use a print statement • A computed value is not stored: If you want to store (save) a computed value, use an assignment statement Reading input from the console input (1) • The console is the terminal window that is running the Java program. • When a Java program starts running, the Java runtime system will initialize many variables in support for the running program. • Java system variable: System.in represents the console input • A Java program can obtains inputs from the console through the keyboard Reading input from the console input (2) • Java's Scanner library class • The class path of the Scanner class inside the Java library is: java.util.Scanner Before a Java program can read input from the keyboard, the program must " construct a Scanner object (explain later) Example: Reading input from the console input (3) • 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 double typed variable with an assignment statement Reading input from the console input (4) • 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 input from the console input (5) • The return value will replace the method call: • The input value 3.5 is then stored in the variable a !!! Reading input from the console input (6) • steps to read in a floating point number Reading input from the console input (7) • Good programming courtesy: • When the program needs the user to enter input from the keyboard, it must print out a (short) prompt message Different Types of Numerical Information Recall • Recall that the computer can combine adjacent bytes in the RAM memory to form larger memory cells • To obtain a higher accuracy (= more significant digit of accuracy), we need to combine more memory cells Trade-offs • Memory usage • Speed Arithmetic expressions that uses higher accuracy will take longer time to compute When a Java program needs to use higher accurate numbers, it will not only use more memory, but it will also take a longer time to complete. Different kinds of floating point numbers in Java • Java provides 2 different sizes of floating point numbers (and variables): 1. Single precision floating numbers (has lower accuracy and uses less memory) uses 4 consecutive bytes of memory as a single 32 bit memory cell 2. Double precision floating numbers (has more accuracy and uses more memory) uses 8 consecutive bytes of memory as a single 64 bit memory cell Defining single and double precision floating point variables • define double precision floating point variables: • define single precision floating point variables: float and double are considered as different types Converting (casting) to a single or a double precision representation • single and double precision floating point numbers uses different encoding methods • The computer has built-in machine instructions to convert between different encodings Very important phenomenon in computer programming: lost of accuracy Safe and unsafe conversion operations • Safe conversion = a conversion from one representation (encoding) to another representation (encoding) where there is no (or very little) loss in accuracy • Unsafe conversion = a conversion from one representation (encoding) to another representation (encoding) where there is significant loss in accuracy Expressions containing values of different types • A computer can only operate on data of the same data type In order to perform any operation on two values of differing types, the computer must: 1. convert one of the types into the other type 2. Perform the operation on the value Automatic conversions: 1. During a calculation of a arithmetic expressions Arithmetic promotion of float to double: 2. Storing the result to a variable by an assignment operator If float value is assigned to a double variable, the float value is converted to double. The general rule for automatic type conversion in the assignment operation • If type1 is a higher accuracy type than type2, then: The type2 value is automatically converted to type1 before the assignment statement is executed. • If type1 is a lower accuracy type than type2, then: The assignment statement is not allowed. You must use an casting operator to make the assignment statement valid.