Sun Microsystems

Wake Tech

Your Guide to Java

Samples
Syllabus
Assignments
Instructors
Introduction
Samples Index
 

CSC 148 Java Programming
Sample Solutions
Chapter Four

// 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 );

}

}