JAVA: An
Introduction to Problem Solving & Programming, 7th
Ed. By Walter Savitch.
ISBN 0133862119 © 2015 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Listing 4.1 |
import java.util.Scanner; public class WhileDemo { public static void main (String [] args) { int count, number; System.out.println ("Enter a number"); Scanner keyboard = new Scanner (System.in); number = keyboard.nextInt (); count = 1; while (count <= number) { System.out.print (count + ", "); count++; } System.out.println (); System.out.println ("Buckle my shoe."); } } |
Listing 4.2 |
import java.util.Scanner; public class DoWhileDemo { public static void main (String [] args) { int count, number; System.out.println ("Enter a number"); Scanner keyboard = new Scanner (System.in); number = keyboard.nextInt (); count = 1; do { System.out.print (count + ", "); count++; } while (count <= number); System.out.println (); System.out.println ("Buckle my shoe."); } } |
Algorithm for Roach Population Program |
Algorithm for roach population program 1. Read houseVolume 2. Read startPopulation 3. population = startPopulation 4. totalBugVolume = population * ONE_BUG_VOLUME 5. countWeeks = 0 6. while (totalBugVolume < houseVolume) { newBugs = population * GROWTH_RATE newBugVolume = newBugs * ONE_BUG_VOLUME population = population + newBugs totalBugVolume = totalBugVolume + newBugVolume countWeeks = countWeeks + 1 } 7. Display startPopulation, houseVolume, countWeeks, population, and totalBugVolume |
Listing 4.3 |
import java.util.Scanner; /** Program to calculate how long it will take a population of roaches to completely fill a house from floor to ceiling. */ public class BugTrouble { public static final double GROWTH_RATE = 0.95; //95% per week public static final double ONE_BUG_VOLUME = 0.002; //cubic feet public static void main (String [] args) { System.out.println ("Enter the total volume of your house"); System.out.print ("in cubic feet: "); Scanner keyboard = new Scanner (System.in); double houseVolume = keyboard.nextDouble (); System.out.println ("Enter the estimated number of"); System.out.print ("roaches in your house: "); int startPopulation = keyboard.nextInt (); int countWeeks = 0; double population = startPopulation; double totalBugVolume = population * ONE_BUG_VOLUME; double newBugs, newBugVolume; while (totalBugVolume < houseVolume) { newBugs = population * GROWTH_RATE; newBugVolume = newBugs * ONE_BUG_VOLUME; population = population + newBugs; totalBugVolume = totalBugVolume + newBugVolume; countWeeks++; } System.out.println ("Starting with a roach population of " + startPopulation); System.out.println ("and a house with a volume of " + houseVolume + " cubic feet,"); System.out.println ("after " + countWeeks + " weeks,"); System.out.println ("the house will be filled with " + (int) population + " roaches."); System.out.println ("They will fill a volume of " + (int) totalBugVolume + " cubic feet."); System.out.println ("Better call Debugging Experts Inc."); } } |
Listing 4.4 |
import java.util.Scanner; /** Computes the average of a list of (nonnegative) exam scores. Repeats computation for more exams until the user says to stop. */ public class ExamAverager { public static void main (String [] args) { System.out.println ("This program computes the average of"); System.out.println ("a list of (nonnegative) exam scores."); double sum; int numberOfStudents; double next; String answer; Scanner keyboard = new Scanner (System.in); do { System.out.println (); System.out.println ("Enter all the scores to be averaged."); System.out.println ("Enter a negative number after"); System.out.println ("you have entered all the scores."); sum = 0; numberOfStudents = 0; next = keyboard.nextDouble (); while (next >= 0) { sum = sum + next; numberOfStudents++; next = keyboard.nextDouble (); } if (numberOfStudents > 0) System.out.println ("The average is " + (sum / numberOfStudents)); else System.out.println ("No scores to average."); System.out.println ("Want to average another exam?"); System.out.println ("Enter yes or no."); answer = keyboard.next (); } while (answer.equalsIgnoreCase ("yes")); } } |
Listing 4.5 |
public class ForDemo { public static void main (String [] args) { int countDown; for (countDown = 3 ; countDown >= 0 ; countDown--) { System.out.println (countDown); System.out.println ("and counting."); } System.out.println ("Blast off!"); } } |
Listing 4.6 |
import java.util.Scanner; /** Illustrates the use of a boolean variable to end loop iteration. */ public class BooleanDemo { public static void main (String [] args) { System.out.println ("Enter nonnegative numbers."); System.out.println ("Place a negative number at the end"); System.out.println ("to serve as an end marker."); int sum = 0; boolean areMore = true; Scanner keyboard = new Scanner (System.in); while (areMore) { int next = keyboard.nextInt (); if (next < 0) areMore = false; else sum = sum + next; } System.out.println ("The sum of the numbers is " + sum); } } |
Spending Spree Algorithm |
1. amountRemaining = amount of gift certificate 2. totalSpent = 0 3. itemNumber = 1 4. while (we have money left to spend and (itemNumber <= max number of items)) { Display amount of money left and number of items that can be bought. Read cost of proposed purchase. if (we can afford the purchase) { Display a message. totalSpent = totalSpent + cost of item Update amountRemaining if (amountRemaining > 0) { Display amount of money left. itemNumber++ } else { Display a message (no more money). Make this the last loop iteration. } } else Display a message (item is too expensive). } Display amount of money spent and farewell message. |
Listing 4.7 |
import java.util.Scanner; public class SpendingSpree { public static final int SPENDING_MONEY = 100; public static final int MAX_ITEMS = 3; public static void main (String [] args) { Scanner keyboard = new Scanner (System.in); boolean haveMoney = true; int leftToSpend = SPENDING_MONEY; int totalSpent = 0; int itemNumber = 1; while (haveMoney && (itemNumber <= MAX_ITEMS)) { System.out.println ("You may buy up to " + (MAX_ITEMS - itemNumber + 1) + " items"); System.out.println ("costing no more than $" + leftToSpend + "."); System.out.print ("Enter cost of item #" + itemNumber + ": $"); int itemCost = keyboard.nextInt (); if (itemCost <= leftToSpend) { System.out.println ("You may buy this item. "); totalSpent = totalSpent + itemCost; System.out.println ("You spent $ + totalSpent + so far. "); leftToSpend = SPENDING_MONEY - totalSpent; if (leftToSpend > 0) itemNumber++; else { System.out.println ("You are out of money.); haveMoney = false; } } else System.out.println ("You cannot buy that item."); } System.out.println ("You spent $" + totalSpent + ", and are done shopping."); } } |
Listing 4.9 |
import javax.swing.JApplet; import java.awt.Graphics; import java.awt.Color; public class MultipleFaces extends JApplet { public static final int FACE_DIAMETER = 50; public static final int X_FACE0 = 10; public static final int Y_FACE0 = 5; public static final int EYE_WIDTH = 5; public static final int EYE_HEIGHT = 10; public static final int X_RIGHT_EYE0 = 20; public static final int Y_RIGHT_EYE0 = 15; public static final int X_LEFT_EYE0 = 45; public static final int Y_LEFT_EYE0 = Y_RIGHT_EYE0; public static final int NOSE_DIAMETER = 5; public static final int X_NOSE0 = 32; public static final int Y_NOSE0 = 25; public static final int MOUTH_WIDTH = 30; public static final int MOUTH_HEIGHT0 = 0; public static final int X_MOUTH0 = 20; public static final int Y_MOUTH0 = 35; public static final int MOUTH_START_ANGLE = 180; public static final int MOUTH_EXTENT_ANGLE = 180; public void paint (Graphics canvas) { super.paint(canvas); int i, xOffset, yOffset; //Want i to exist after the loop ends for (i = 0 ; i <= 4 ; i++) { //Draw one face: xOffset = 50 * i; yOffset = 30 * i; //Draw face interior and outline: if (i % 2 == 0) //if i is even, { //Make face yellow canvas.setColor (Color.YELLOW); canvas.fillOval (X_FACE0 + xOffset, Y_FACE0 + yOffset, FACE_DIAMETER, FACE_DIAMETER); } canvas.setColor (Color.BLACK); canvas.drawOval (X_FACE0 + xOffset, Y_FACE0 + yOffset, FACE_DIAMETER, FACE_DIAMETER); //Draw eyes: canvas.setColor (Color.BLUE); canvas.fillOval (X_RIGHT_EYE0 + xOffset, Y_RIGHT_EYE0 + yOffset, EYE_WIDTH, EYE_HEIGHT); canvas.fillOval (X_LEFT_EYE0 + xOffset, Y_LEFT_EYE0 + yOffset, EYE_WIDTH, EYE_HEIGHT); //Draw nose: canvas.setColor (Color.BLACK); canvas.fillOval (X_NOSE0 + xOffset, Y_NOSE0 + yOffset, NOSE_DIAMETER, NOSE_DIAMETER); //Draw mouth: canvas.setColor (Color.RED); canvas.drawArc (X_MOUTH0 + xOffset, Y_MOUTH0 + yOffset, MOUTH_WIDTH, MOUTH_HEIGHT0 + 3 * i, MOUTH_START_ANGLE, MOUTH_EXTENT_ANGLE); } //i is 5 when the previous loop ends xOffset = 50 * i; yOffset = 30 * i; //Draw kissing face: //Draw face outline: canvas.setColor (Color.BLACK); canvas.drawOval (X_FACE0 + xOffset, Y_FACE0 + yOffset, FACE_DIAMETER, FACE_DIAMETER); //Draw eyes: canvas.setColor (Color.BLUE); canvas.fillOval (X_RIGHT_EYE0 + xOffset, Y_RIGHT_EYE0 + yOffset, EYE_WIDTH, EYE_HEIGHT); canvas.fillOval (X_LEFT_EYE0 + xOffset, Y_LEFT_EYE0 + yOffset, EYE_WIDTH, EYE_HEIGHT); //Draw nose: canvas.setColor (Color.BLACK); canvas.fillOval (X_NOSE0 + xOffset, Y_NOSE0 + yOffset, NOSE_DIAMETER, NOSE_DIAMETER); //Draw mouth in shape of a kiss: canvas.setColor (Color.RED); canvas.fillOval (X_MOUTH0 + xOffset + 10, Y_MOUTH0 + yOffset, MOUTH_WIDTH - 20, MOUTH_WIDTH - 20); //Add text: canvas.drawString ("Kiss, Kiss.", X_FACE0 + xOffset + FACE_DIAMETER, Y_FACE0 + yOffset); //Draw blushing face: i++; xOffset = 50 * i; yOffset = 30 * i; //Draw face interior and outline: canvas.setColor (Color.PINK); canvas.fillOval (X_FACE0 + xOffset, Y_FACE0 + yOffset, FACE_DIAMETER, FACE_DIAMETER); canvas.setColor (Color.BLACK); canvas.drawOval (X_FACE0 + xOffset, Y_FACE0 + yOffset, FACE_DIAMETER, FACE_DIAMETER); //Draw eyes: canvas.setColor (Color.BLUE); canvas.fillOval (X_RIGHT_EYE0 + xOffset, Y_RIGHT_EYE0 + yOffset, EYE_WIDTH, EYE_HEIGHT); canvas.fillOval (X_LEFT_EYE0 + xOffset, Y_LEFT_EYE0 + yOffset, EYE_WIDTH, EYE_HEIGHT); //Draw nose: canvas.setColor (Color.BLACK); canvas.fillOval (X_NOSE0 + xOffset, Y_NOSE0 + yOffset, NOSE_DIAMETER, NOSE_DIAMETER); //Draw mouth: (same as on face before kissing one) canvas.setColor (Color.RED); canvas.drawArc (X_MOUTH0 + xOffset, Y_MOUTH0 + yOffset, MOUTH_WIDTH, MOUTH_HEIGHT0 + 3 * (i - 2), MOUTH_START_ANGLE, MOUTH_EXTENT_ANGLE); //Add text: canvas.drawString ("Tee Hee.", X_FACE0 + 50 * i + FACE_DIAMETER, Y_FACE0 + yOffset); } } |