|
CSC 148 Java Programming // Exercise 4.8 Solution // Garage.java // Program calculates charges for parking import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class Garage extends Applet implements ActionListener { TextField input; Label message; double totalReceipts, fee; boolean enabled; public void init() { input = new TextField( 4 ); input.addActionListener( this ); message = new Label( "Enter number of hours:" ); add( message); add( input ); } public void actionPerformed( ActionEvent e ) { Double d = new Double( input.getText() );
fee = calculateCharges( d.doubleValue() ); totalReceipts += fee; showStatus( "Total receipts: " + totalReceipts ); enabled = true; repaint(); } public void paint( Graphics g ) { if ( enabled == true ) g.drawString( "Charge is: " + fee, 80, 80 ); } public double calculateCharges( double hours ) { double charge = 0.0; if ( hours <= 3.0 && hours > 0.0 ) charge = 2.0; else if ( hours > 3.0 && hours <= 19.0 ) charge = 2.0 + 0.5 * Math.ceil( hours - 3.0 ); else if ( hours > 19.0 ) charge = 10.0; return charge; } }
// Exercise 4.14 Solution // Power.java // Program calculates an exponent import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class Power extends Applet implements ActionListener { TextField baseInput, expInput; Label basePrompt, expPrompt; public void init() { baseInput = new TextField( 4 ); expInput = new TextField( 4 ); expInput.addActionListener( this ); basePrompt = new Label( "Enter base: " ); expPrompt = new Label( "Enter exponent: " ); add( basePrompt ); add( baseInput ); add( expPrompt ); add( expInput ); } public void actionPerformed( ActionEvent e ) { int base, exponent; base = Integer.parseInt( baseInput.getText() ); exponent = Integer.parseInt( expInput.getText() ); if ( exponent > 0 ) { int result = integerPower( base, exponent ); showStatus( "Value is " + result ); } else showStatus( "Invalid Exponent." ); } public int integerPower( int b, int exp ) { int product = 1; for ( int x = 1; x <= exp; x++ ) product *= b; return product; } }
// Exercise 4.18 Solution // Square.java // Program draws a square of asterisks import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class Square extends Applet implements ActionListener { TextField input; Label inputLabel; int size; public void init() { input = new TextField( 4 ); input.addActionListener( this ); inputLabel = new Label( "Enter square size:" ); add( inputLabel ); add( input ); } public void actionPerformed( ActionEvent e ) { size = Integer.parseInt( input.getText() ); repaint(); } public void squareOfAsterisks( Graphics g ) { int y = 50, x = 5; for ( int a = 1; a <= size * size; a++ ) { g.drawString( "*", x += 5, y ); if ( a % size == 0 ) { y += 10; x = 5; } } } public void paint( Graphics g ) { squareOfAsterisks( g ); } } // Exercise 4.19 Solution // Square2.java // Program draws a square of asterisks import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class Square2 extends Applet implements ActionListener { TextField input, fillChar; Label inputLabel, fillLabel; int size; char fillCharacter; public void init() { input = new TextField( 4 ); input.addActionListener( this ); fillChar = new TextField( 4 ); inputLabel = new Label( "Enter square size:" ); fillLabel = new Label( "Enter a character:" ); add( fillLabel ); add( fillChar ); add( inputLabel ); add( input ); } public void actionPerformed( ActionEvent e ) { size = Integer.parseInt( input.getText() ); // get the first character in the string fillCharacter = fillChar.getText().charAt( 0 ); repaint(); } public void squareOfAsterisks( Graphics g ) { int y = 50, x = 5; for ( int a = 1; a <= size * size; a++ ) { g.drawString( String.valueOf( fillCharacter ), x += 10, y ); if ( a % size == 0 ) { y += 10; x = 5; } } } public void paint( Graphics g ) { squareOfAsterisks( g ); } }
// Exercise 4.21 Solution // Rect.java // Program draws a rectangle on the applet import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class Rect extends Applet implements ActionListener { TextField xInput, yInput; Label xLabel, yLabel; int x, y, width, height; public void init() { x = -500; y = -500; xInput = new TextField( 4 ); yInput = new TextField( 4 ); yInput.addActionListener( this ); xLabel = new Label( "Enter x value (0-260):" ); yLabel = new Label( "Enter y value (60-240):" ); add( xLabel ); add( xInput ); add( yLabel ); add( yInput ); width = 40; height = 60; } public void actionPerformed( ActionEvent e ) { showStatus( "" ); x = Integer.parseInt( xInput.getText() ); y = Integer.parseInt( yInput.getText() ); if ( x < 0 || x > 260 || y < 60 || y > 240 ) showStatus( "Invalid entry!!!" ); repaint(); } public void paint( Graphics g ) { solidSquare( g ); } public void solidSquare( Graphics g ) { g.fillRect( x, y, width, height ); } } // Exercise 4.31 Solution // Multiply.java // Program generates single digit multiplication // problems. import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class Multiply extends Applet implements ActionListener { TextField input; Label prompt; int digit1, digit2, guess; boolean firstTime; public void init() { input = new TextField( 4 ); input.addActionListener( this ); prompt = new Label( "Enter your answer: " ); add( prompt ); add( input ); firstTime = true; } public void start() { digit1 = getNumber(); digit2 = getNumber(); } public int getNumber() { return ( ( int ) ( Math.random() * 10 ) ); } public void paint( Graphics g ) { if ( !firstTime ) if ( guess != ( digit1 * digit2 ) ) g.drawString( "No. Please try again.", 5, 80 ); else { g.drawString( "Very Good!", 5, 80 ); digit1 = getNumber(); digit2 = getNumber(); }
showStatus( "How much is " + digit1 + " times " + digit2 + " ?" ); } public void actionPerformed( ActionEvent e ) { firstTime = false; guess = Integer.parseInt( input.getText() ); input.setText( "" ); repaint(); } } // Exercise 4.32 Solution // Multiply2.java // Program generates single digit multiplication // problems. import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class Multiply2 extends Applet implements ActionListener { TextField input; Label prompt; int digit1, digit2, guess; boolean firstTime; public void init() { input = new TextField( 4 ); input.addActionListener( this ); prompt = new Label( "Enter your answer: " ); add( prompt ); add( input ); firstTime = true; } public void start() { digit1 = getNumber(); digit2 = getNumber(); } public int getNumber() { return ( ( int ) ( Math.random() * 10 ) ); } public void paint( Graphics g ) { if ( !firstTime ) if ( guess != ( digit1 * digit2 ) ) switch ( ( int ) ( Math.random() * 4 ) ) { case 0: g.drawString( "No. Please try again.", 5, 80 ); break; case 1: g.drawString( "Wrong. Try once more.", 5, 80 ); break; case 2: g.drawString( "Don't give up!", 5, 80 ); break; case 3: g.drawString( "No. Keep trying.", 5, 80 ); break; } else { switch ( ( int ) ( Math.random() * 4 ) ) { case 0: g.drawString( "Very Good!", 5, 80 ); break; case 1: g.drawString( "Excellent!", 5, 80 ); break; case 2: g.drawString( "Nice work!", 5, 80 ); break; case 3: g.drawString( "Keep up the good work!", 5, 80 ); break; }
digit1 = getNumber(); digit2 = getNumber(); }
showStatus( "How much is " + digit1 + " times " + digit2 + " ?" ); } public void actionPerformed( ActionEvent e ) { firstTime = false; guess = Integer.parseInt( input.getText() ); input.setText( "" ); repaint(); } }
// Exercise 4.33 Solution // Multiply3.java // Program generates single digit multiplication problems. import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class Multiply3 extends Applet implements ActionListener { TextField input; Label prompt; int digit1, digit2, guess; int right, wrong, count; boolean firstTime, flag; public void init() { input = new TextField( 4 ); input.addActionListener( this ); prompt = new Label( "Enter your answer: " ); add( prompt ); add( input ); firstTime = true; } public void start() { digit1 = getNumber(); digit2 = getNumber(); } public int getNumber() { return ( ( int ) ( Math.random() * 10 ) ); } public void paint( Graphics g ) { if ( flag == true ) { flag = false; g.drawString( " " , 5, 80 ); return; } if ( !firstTime ) if ( guess != ( digit1 * digit2 ) ) { switch ( ( int ) ( Math.random() * 4 ) ) { case 0: g.drawString( "No. Please try again.", 5, 80 ); break; case 1: g.drawString( "Wrong. Try once more.", 5, 80 ); break; case 2: g.drawString( "Don't give up!", 5, 80 ); break; case 3: g.drawString( "No. Keep trying.", 5, 80 ); break; } wrong++; } else { switch ( ( int ) ( Math.random() * 4 ) ) { case 0: g.drawString( "Very Good!", 5, 80 ); break; case 1: g.drawString( "Excellent!", 5, 80 ); break; case 2: g.drawString( "Nice work!", 5, 80 ); break; case 3: g.drawString( "Keep up the good work!", 5, 80 ); break; } right++; digit1 = getNumber(); digit2 = getNumber(); } if ( count == 10 ) { if ( calculatePercentage() < 0.75 ) { System.out.println( "Please ask your instructor " + "for extra help." ); count = 0; flag = true; repaint(); } } showStatus( "How much is " + digit1 + " times " + digit2 + " ?" ); } public double calculatePercentage() { return ( double ) right / ( wrong + right ); } public void actionPerformed( ActionEvent e ) { firstTime = false; guess = Integer.parseInt( input.getText() ); count++; repaint(); input.setText( "" ); } }
// Exercise 4.38 Solution // TowerOfHanoi.java // Program solves the towers of hanoi problem import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class TowerOfHanoi extends Applet implements ActionListener { private Label label; private TextField input; public void init() { label = new Label( "Enter number of disks ( 1-9 ): " ); input = new TextField( 5 ); input.addActionListener( this ); add( label ); add( input ); } public void tower( int disks, int peg1, int peg3, int peg2 ) { if ( disks == 1 ) { System.out.println( peg1 + " --> " + peg3 ); return; } // move ( disks - 1 ) disks from peg1 to peg2 tower( disks - 1, peg1, peg2, peg3 ); // move last disk from peg1 to peg3 System.out.println( peg1 + " --> " + peg3 ); // move ( disks - 1 ) disks from peg2 to peg3 tower( disks - 1, peg2, peg3, peg1 ); } public void actionPerformed( ActionEvent e ) { tower( Integer.parseInt( input.getText() ), 1, 3, 2 ); } }
|