Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Programming Activity 6-2 Guidance Programming Activity 2: Using for Loops /* Cart * Anderson, Franceschi */ import javax.swing.JFrame; import java.awt.Graphics; import java.awt.Color; import java.text.DecimalFormat; public

Programming Activity 6-2 Guidance

Programming Activity 2: Using "for" Loops

/* Cart * Anderson, Franceschi */ import javax.swing.JFrame; import java.awt.Graphics; import java.awt.Color; import java.text.DecimalFormat;

public class Cart { Item[] items; int itemSize = 3; int currentItem;

int currentNumberItems; int totalNumberItems; double currentTotal; double exactTotal;

Color background = new Color( 205, 205, 205 );

public Cart( ) { items = new Item[itemSize];

// // Student can modify constructors' arguments below // Check out the 3 constructors // argument represents price // items[0] = new Milk( 2.00 ); items[1] = new Cereal( 3.50 ); items[2] = new OrangeJuice( 3.00 ); // // currentNumberItems = 0; totalNumberItems = 0; currentTotal = 0.0; exactTotal = 0.0; currentItem = -1; }

public void setCurrentItem( int ci ) { currentItem = ci; }

public int getCurrentItem( ) { return currentItem; }

public Item [] getItems( ) { return items; }

public int getItemSize( ) { return itemSize; }

public void updateTotal( double newCurrentTotal ) { currentTotal = newCurrentTotal; }

public void updateNumberItems( ) { currentNumberItems++; }

public int getNumberItems( ) { return currentNumberItems; }

public void updateTotalNumberItems( int newTotalNumberItems ) { totalNumberItems = newTotalNumberItems; }

public int getTotalNumberItems( ) { return totalNumberItems; }

public void setExactTotal( double newExactTotal ) { exactTotal = newExactTotal; }

public Color getBackground( ) { return background; }

public void draw( Graphics g ) { g.setColor( Color.black ); g.drawString( "EXPRESS LANE", 125, 50 ); g.setColor( Color.black ); g.fillRoundRect( 50, 200, 150, 10, 2, 2 ); // belt g.setColor( new Color( 220, 110, 55 ) ); g.fill3DRect( 195, 200, 60, 70, true ); // bag

DecimalFormat money = new DecimalFormat( "$0.00" );

String displayItemNumber = "Item # " + currentNumberItems + " of " + totalNumberItems; String displayStudentTotal = "Your subtotal = " + money.format( currentTotal ); String displayExactTotal = "Correct subtotal = " + money.format( exactTotal );

g.setColor( Color.blue );

g.drawString( displayItemNumber, 220, 80 ); g.drawString( displayStudentTotal, 20, 90 ); g.drawString( displayExactTotal, 20, 115 );

if ( currentItem != -1 ) items[currentItem].draw( g, 50, 200, 200, background ); } }

----------------------------------------------------------------------------------

/* Cereal * Anderson, Franceschi */ import java.awt.Graphics; import java.awt.Color; import java.text.DecimalFormat;

public class Cereal extends Item { public Cereal( double p ) { super( p ); }

public void draw( Graphics g, int startX, int endX, int y, Color eraseColor ) { DecimalFormat money = new DecimalFormat( "$0.00" );

String display1 = "Cereal: Unit price = " + money.format( price );

g.setColor( Color.BLUE ); g.drawString( display1, 20, 65 );

for ( int x = startX; x

----------------------------------------------------------------------------

/* Cashier class Anderson, Franceschi */

import java.awt.Color; import java.awt.Graphics; import javax.swing.JFrame; import javax.swing.JOptionPane; import java.text.DecimalFormat;

public class Cashier extends JFrame { private Cart cart; private Item previousItem; private double currentTotal;

public Cashier() { super("Chapter 6 Programming Activity 2"); cart = new Cart(); previousItem = null; currentTotal = 0.0; getContentPane().setBackground(cart.getBackground()); setSize(325, 300); setVisible(true); }

public void checkout(int numberOfItems) { /* ***** Student writes the body of this method ***** */ // // The parameter of this method, numberOfItems, // represents the number of items in the cart. The // user will be prompted for this number. // // Using a for loop, calculate the total price // of the groceries for the cart. // // The getNext method (in this Cashier class) returns the next // item in the cart, which is an Item object (we do not // know which item will be returned; this is randomly generated). // getNext does not take any arguments. its API is // Item getNext() // // As the last statement of the body of your for loop, // you should call the animate method. // The animate method takes one parameter: a double, // which is your current subtotal. // For example, if the name of your variable representing // the current subtotal is total, your call to the animate // method should be: // animate(total); // // The getPrice method of the Item class // returns the price of the Item object as a double. // The getPrice method does not take any arguments. Its API is // double getPrice() // // After you have processed all the items, display the total // for the cart in a dialog box. // Student code starts here:

// Student code ends here. }

public Item getNext() { if (cart.getTotalNumberItems() > cart.getNumberItems()) { // get next item cart.setCurrentItem ((int) (Math.random() * cart.getItemSize()));

// update previousItem so that we can keep track of the current total previousItem = cart.getItems()[cart.getCurrentItem()];

// update number of items in cart cart.updateNumberItems();

// update currentTotal if ((previousItem != null) && (previousItem.getPrice() >= 0)) currentTotal += previousItem.getPrice(); cart.setExactTotal(currentTotal);

return (cart.getItems())[cart.getCurrentItem()]; } else { JOptionPane.showMessageDialog(null, "Error: getNext() method called when cart is empty", "Logic error", JOptionPane.ERROR_MESSAGE); return null; } }

public void animate(double subtotal) { cart.updateTotal(subtotal);

repaint(); try { Thread.sleep(3000); // wait for the animation to finish } catch (Exception e) { } }

public void paint(Graphics g) { super.paint(g); cart.draw(g); }

public static void main(String [] args) { Cashier app = new Cashier(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); int numItems = 0; boolean goodInput = false; do { String howMany = JOptionPane.showInputDialog(null, "Enter the number of items in the cart (1 - 10)"); if (howMany == null) System.exit(0); try { numItems = Integer.parseInt(howMany); goodInput = true; } catch(NumberFormatException nfe) { // goodInput is still false } } while (!goodInput || numItems 10);

(app.cart).updateTotalNumberItems(numItems); app.checkout(numItems); }

}

----------------------------------------------------------------------

Programming Activity 6-2 Guidance ================================= For this activity, you are totaling item prices. You must get each item, get its price, and add that price to the total. When you have the final total, you output it in the format specified. Purpose of "for" loop --------------------- You must understand the purpose of the "for" loop in this assignment. The "for" loop is to iterate through the items and update a total. The "for" loop should not be the only thing in the function. It needs appropriate local variables declared BEFORE it begins. That means BEFORE the "for" statement line. You output the total AFTER the "for" loop finishes. That means AFTER its closing brace. That is why local variables, like the total, must be declared BEFORE the "for" loop is entered. If you declared the total variable inside the "for" loop, then it could not be referenced after it. Pseudocode for this assignment ------------------------------ You can find the following in this weeks outline: Calculate a total (using a for loop) (pseudocode) total = 0 // There is no need for a priming read. for (int i = 1; i  

----------------------------------------------------------------------------------

image text in transcribedimage text in transcribed

image text in transcribed

Example Programming Activity 6-2 Output Here the program prompts the user for the number of items and the user has entered 5 Chapter & p EXPHE88 LANE Cur Subo su.JU oTe:t subtclal 000 Adobe naut Enter ie sumber of ilesms in the ca (1.10 W5 FTP Calcularor TerGen Methemsties GecG ttrs intense T.Exflarer Contol Fanal yle Din 10PM (continued on next page) Example Programming Activity 6-2 Output Here the program prompts the user for the number of items and the user has entered 5 Chapter & p EXPHE88 LANE Cur Subo su.JU oTe:t subtclal 000 Adobe naut Enter ie sumber of ilesms in the ca (1.10 W5 FTP Calcularor TerGen Methemsties GecG ttrs intense T.Exflarer Contol Fanal yle Din 10PM (continued on next page)

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Microsoft Office 365 For Beginners 2022 8 In 1

Authors: James Holler

1st Edition

B0B2WRC1RX, 979-8833565759

More Books

Students also viewed these Databases questions

Question

sharing of non-material benefits such as time and affection;

Answered: 1 week ago