/** * Homework: Assignment 3 * Exercise: 6.3 in textbook, page 342 * Author: Richard Parry * Date: July 12, 1998 * Filename: RationalTest.java * School: UCSD, Summer 98 Java 1 class * * Description: * This program, RationalTest tests the funtionality * of the Rational Class. It provides the front end GUI for the * underlying program (Rational.java). **/ import java.applet.Applet; import java.awt.*; // import the java.awt package import java.awt.event.*; // import the java.awt.event package import java.text.DecimalFormat; // required for formatting percent // declare class public class RationalTest extends Applet implements ActionListener { // variables Label prompt1, prompt2, prompt3, prompt4; TextField input1, input2, input3, input4; float floatResult; Button compute; private Rational r1; private Rational r2; public void init() { /** Instantiate objects r1 and r2. When an object is instantiated, * the Rational constructor is called automatically to set private instance * variables to their default values. */ r1 = new Rational(); r2 = new Rational(); // declare prompts prompt1 = new Label( "Numerator 1" ); prompt2 = new Label( "Denominator 1" ); prompt3 = new Label( "Numerator 2" ); prompt4 = new Label( "Denominator 2" ); // declare input fields, note field that is tied to event input1 = new TextField( 10 ); input2 = new TextField( 10 ); input3 = new TextField( 10 ); input4 = new TextField( 10 ); // add to GUI add( prompt1 ); add( input1 ); add( prompt3 ); add( input3 ); add( prompt2 ); add( input2 ); add( prompt4 ); add( input4 ); // init button compute = new Button( "Compute" ); compute.addActionListener( this ); add( compute ); } // end init method // display the results public void paint( Graphics g ) { // declare decimal precision format DecimalFormat precision2 = new DecimalFormat( "#.00" ); // display banner g.drawString( "RATIONAL - Fractional Arithmetic", 100, 110 ); g.drawString( "- RESULTS -", 160, 150 ); int xPosition = 90; int yPosition = 165; // Add two rational numbers by calling add method Rational addResult = Rational.add( r1, r2); floatResult = Rational.rational2Decimal(addResult); // convert to decimal g.drawString("Addition " + r1.toString() + " + " + r2.toString() + " = " + addResult.toString() + " ~ " + precision2.format( floatResult ), xPosition, yPosition); yPosition += 15; // move cursor to next line // Substract two rational numbers by calling sub method Rational subResult = Rational.sub( r1, r2); floatResult = Rational.rational2Decimal(subResult); // convert to decimal g.drawString("Substract " + r1.toString() + " - " + r2.toString() + " = " + subResult.toString() + " ~ " + precision2.format( floatResult ), xPosition, yPosition); yPosition += 15; // move cursor to next line // Multiply two rational numbers by calling mul method Rational mulResult = Rational.mul( r1, r2); floatResult = Rational.rational2Decimal(mulResult); // convert to decimal g.drawString("Multiply " + r1.toString() + " * " + r2.toString() + " = " + mulResult.toString() + " ~ " + precision2.format( floatResult ), xPosition, yPosition); yPosition += 15; // move cursor to next line // Divide two rational numbers by calling div method Rational divResult = Rational.div( r1, r2); floatResult = Rational.rational2Decimal(divResult); // convert to decimal g.drawString("Divide " + r1.toString() + " / " + r2.toString() + " = " + divResult.toString() + " ~ " + precision2.format( floatResult ), xPosition, yPosition); yPosition += 15; // move cursor to next line } // end paint method // process user's actions public void actionPerformed( ActionEvent e ) { int numerator1, denominator1, numerator2, denominator2; numerator1 = Integer.parseInt( input1.getText() ); denominator1 = Integer.parseInt( input2.getText() ); numerator2 = Integer.parseInt( input3.getText() ); denominator2 = Integer.parseInt( input4.getText() ); // create two objects to represent two rational numbers r1 = new Rational(numerator1, denominator1); r2 = new Rational(numerator2, denominator2); repaint(); } } // end class declaration