Question: /* 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;
/* 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 < 1 || 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 <= number of items; i++) { read next number // Update read total += number } output total Students who have not taken time to learn about pseudocode, mistakenly think that it is real code and try to use it verbatim. Then, when it does not even compile, they get confused. It is called pseudocode because it is not real, final code. It requires work to turn it into real code. Some fragments of it may match real code. Other parts simply outline what to do. More specifically for 6-2 ------------------------- initialize variables The above pseudocode only shows a total variable. Remember that this is pseudocode. In Java every variable must have a type. You need other variables besides the double for the total. You need a reference to an item of type Item. Another useful variable is a double to store the price of an item. Your for loop must iterate once for each item. Your for loop condition must make use of the parameter numberOfItems, which is automatically passed into the function you are in by the framework. Here is an outline for your for loop body: Get the next item and its price. Update the total with the current item's price. Make the call to animate. After the end of the for loop: Output the results. Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
