500 likes | 753 Views
Chapter 3. Manipulating Data Using Methods . Objectives. Identify, declare, and use primitive data types Use the System class to create data streams Instantiate the BufferedReader class in code Use the readLine() method to handle user input. Objectives.
E N D
Chapter 3 Manipulating Data Using Methods
Objectives • Identify, declare, and use primitive data types • Use the System class to create data streams • Instantiate the BufferedReader class in code • Use the readLine() method to handle user input
Objectives • Convert strings to numbers using the parse() method • Use assignment statements to store data with proper identifiers • Use operators and parentheses correctly in numeric and conditional expressions • Round an answer using the round() method of the Math class
Objectives • Use Swing components to build the GUI for a Swing program • Use the exit() method to close a Swing program • Implement an ActionListener to handle events • Add interface components to an applet
Objectives • Use the init() and paint() methods to load the applet interface • Use the actionPerformed() method • Run and test an interactive applet • Manage Java source code files and Java class files
Introduction • Data are collections of raw facts or figures • A program performs operations on input data to output information • Input data can come from a variety of sources • The program itself • Users of the program • External files
The Body Mass Index Calculator • An interactive program • Accepts the weight and height from the user • Calculates the BMI to gauge total body fat • Displays the result • Three versions • Mobile devices use the command prompt • Notebooks use dialog boxes • Web environments use an applet interface
(a) console application in a command prompt window (b) console application using dialogboxes (c) applet
Problem Analysis • Convert user input to metric measurements • Calculate the BMI • Display the result
Design the Solution • Design the three kinds of user interfaces with storyboards • Design the logic of the program • Use pseudocode for sequential flow for all programs • Use an event diagram for the applet • Validate the design • Compare the program design with the original requirements
Coding the Program • Import the java.io package • Provides classes to support system input and output • Add a throws IOException clause to the method header • Warns the compiler that the possibility of input or output errors exists • Gives the program the opportunity to handle input or output errors during run-time without aborting
Storing Data • Java is strongly typed • Variables must be declared with a data type • Variable locations can hold only that data type • Java has two categories of data types • Primitive data types hold single data items • Integers, characters, floating point, and booleans are primitive types • Reference data types hold a value that refers to the location of the data • All Objects and arrays are reference types
User Input - Streams • The act of data flowing in and out of a program is called a stream • The System class creates three streams when a program executes
User Input - Streams cont. • Data from input streams are first sent to a buffer • The java.io package contains several stream classes • InputStreamReader • Decodes the bytes from the System.in buffer into characters • BufferedReader • Increases efficiency by temporarily storing the input received from another class, such as InputStreamReader • Aids in platform independence by simplifying the process of reading text and numbers from various input sources
Using the BufferedReader class • Call the BufferedReader constructor to instantiate a BufferedReader object • The argument of the BufferedReader() method instantiates an InputStreamReader • BufferedReader() returns a reference to the input data from System.in
Conversions • The readLine() method reads a line of input text and returns a String containing the line • The returned String must be explicitly converted if the data is to be used as another data type • Each primitive data type has a wrapper class allowing the primitive to be treated as an object • The wrapper classes provides a parse() method to convert Strings to primitives, and vice versa • Example: height = dataIn.readLine(); inches = Integer.parseInt(height);
Assignment Statements • General syntax: location = value
Arithmetic Operators • The order of operator precedence is a predetermined order that defines the sequence in which operators are evaluated in an expression • Addition, subtraction, multiplication, and division can manipulate any numeric data type • When Java performs math on mixed data types, the result is always the larger data type • Casts allow programmers to force a conversion from one primitive type to another
Comparison Operators • A comparison operation results in a true or false value that can be stored in a boolean variable
Numeric Expressions • Numeric expressions evaluate to a number • Only numeric primitive data types may be used in a numeric expression • A value and variable must be separated by an arithmetic operator • Unless parentheses supercede, an expression is evaluated left to right with the following rules of precedence: • Multiplication and/or division • Integer division • Modular division • Addition and/or subtraction
Conditional Expressions • Conditional expression evaluate to either true or false • Comparison operators, values, variables, methods, and Strings may be used in a conditional expression • Two operands must be separated by a comparison operator • Unless parentheses supercede, an expression is evaluated left to right with relational operators (<, <=, >, >=) taking precedence over equality operators (==, !=)
Parentheses in Expressions • Parentheses may be used to change the order of operations • The part of the expression within the parentheses is evaluated first • Parentheses can provide clarity in complex expressions • Numeric and conditional expressions should be grouped with parentheses • Parentheses can be nested • Java evaluates the innermost expression first and then moves on to the outermost expression
Error-Free Expressions • Java may not be able to evaluate a validly formed expression due to the following logic errors: • Dividing by zero • Taking the square root of a negative value • Raising a negative value to a non-integer value • Using a value too great or too small for a given data type • Comparing different data types in a conditional expression
Testing the Application • Compile the Body Mass Index Calculator program • Execute the program • Test the program by entering the sample input data supplied in the requirements phase at the prompts • Verify the results • Print the source code and screen images for documentation
Using Swing Components • Save the previous version of the Body Mass Index Calculator with a new filename • Import the javax.swing.JOptionPane class • Contains methods to create dialog boxes for input, confirmation, and messages • Delete the IOException and BufferedReader code • The swing dialog boxes buffer data from the user and handle IO errors
Swing Dialog Boxes • Dialog boxes are created with the JOptionPane “show” methods • The showInputDialog() and showConfirmDialog return a String containing the user input
Closing Programs that use Swing • System.exit() terminates an application that displays a GUI • The command prompt window closes when this method is called • System.exit accepts an integer argument that serves as a status code • 0 indicates successful termination • 1 indicates abnormal termination
Testing the Swing Program • Verify that the file name matches the class name at the beginning of the code • Compile the source code • Test with the same sample data for all versions to compare output results • If incorrect or unrealistic data is entered by the user, errors will occur • Errors and exception handling will be discussed in a later chapter
Moving to the Web • The applet version of the Body Mass Index Calculator has four kinds of objects • Image, Labels, TextFields, and Buttons • Import three packages • Java.applet • Java.awt • Java.awt.event • Implement an ActionListener interface in the class header • Informs the program to respond to user-driven events
Moving to the Web • Every event class has one or more associated listener interfaces
Adding Interface Components • Label • Displays text in the applet window • TextField • Displays a text box for users to enter text • Buttons • Displays a command button for users to click
The init() Method • Initializes the window color and graphic • Adds components to the applet window • Registers the Button’s ActionListener
The actionPerformed() Method • When a click event occurs, the ActionListener’s actionPerformed() method is triggered • Input values are retrieved with getText() • Calculations are performed • Output is sent to a label with setText()
The paint() Method • Draws the initialized image in the applet window
Creating an HTML Host Document for an Interactive Applet • Compile the applet • Write an HTML Host Document to execute the applet • Use the <APPLET> tag to specify the bytecode file, and width and height of the window • Use the same sample data to test the applet • Document the source code
File management • Coding and compiling an application creates several files on your storage device • File naming conventions and the operating system’s capability of displaying icons can help the programmer maintain a logical order • Three java files named after the program purpose and user interface type • Three class files after compilation • HTML host document • Image file
Summary • Variable declarations • Data types • Assignment statements • Input streams • InputStreamReader • BufferedReader • readline() • Arithmetic operators • Operator precedence • Math class methods
Summary • Output using System.out • Concatenation of mixed data types • Java Swing components • JOptionPane • AWT Components and method constructors • Labels, TextFields, and Buttons • Events • ActionEvent, ActionListener, actionPerformed()