I have a running total in my controller that will keep track of money the end user has inserted via the clicking of buttons. When the end user clicks the 'purchase' button, the running total is assigned to a string variable that will be sent into the model; however, the string variable is not holding the same value that the running total variable is holding. I have poured over Eclipse's debug and walked through the code, but this is beyond me. I would appreciate any help :)
The 'purchase' button's class is near the very bottom of the code snippet. The string that holds the running total's value is called 'fundsDouble'.
package edu.witc.controller;
//Importing necessary packages
//Intangible packages
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//Other classes
import edu.witc.view.VendingMachine;
import edu.witc.model.Products;
//Parent class
public class Controller
{
// Declare all variables here: the Declare Monster be lurkin' in these parts
private VendingMachine view = null; // A reference to our view
private Products model = new Products(); // A reference to our model
private double funds = 0.00; // See the method 'calculateFunds'
// Default constructor
public Controller()
{
}
// Overloaded constructor for the parent class
public Controller(VendingMachine view)
{
// Here, we are simply connecting to the listeners in the view
// Making sure Java knows what our view is because Java is not very smart
this.view = view;
// Instantiating button listener classes
// Money Buttons
// Nickel Button
NickelButtonListener nickelListen = new NickelButtonListener();
// Dime Button
DimeButtonListener dimeListen = new DimeButtonListener();
// Quarter Button
QuarterButtonListener quarterListen = new QuarterButtonListener();
// One Dollar Button
OneDollarButtonListener oneDollarListen = new OneDollarButtonListener();
// Five Dollars Buttons
FiveDollarsButtonListener fiveDollarsListen = new FiveDollarsButtonListener();
// Other Buttons
// Purchase Button
PurchaseButtonListener purchaseListen = new PurchaseButtonListener();
// Cancel Button
CancelButtonListener cancelListen = new CancelButtonListener();
// Then pinning our 'VendingMachine' buttons to their listeners
// Money Buttons
// Nickel Button
this.view.addNickelListener(nickelListen);
// Dime Button
this.view.addDimeListener(dimeListen);
// Quarter Button
this.view.addQuarterListener(quarterListen);
// One Dollar Button
this.view.addOneDollarListener(oneDollarListen);
// Five Dollar Button
this.view.addFiveDollarsListener(fiveDollarsListen);
// Other Buttons
// Purchase Button
this.view.addPurchaseListener(purchaseListen);
// Cancel Button
this.view.addCancelListener(cancelListen);
}
// This function handles the funds the end user inserts into the vending machine
private void calculateFunds(double money)
{
// We're going to add funds for the end user, depending on which button they clicked, which is why 'money' doesn't represent a specified coin/bill
funds = funds + money;
// Send 'funds' to the view
view.setFunds(funds);
}
// This method handles the displaying of the end user's change
public void displayChange()
{
String change = model.getChange();
// Display the end user's change
view.displayMessage(change);
}
// What follows are our various classes for our many buttons on the form
// Money Buttons
// Nickel Button
class NickelButtonListener implements ActionListener
{
// This variable represents a nickel
private double nickel = 0.05;
// "Who woke me up?" asked the 'actionPerformed' method, and we're telling it that 'e' did, which is an 'ActionEvent' object
public void actionPerformed(ActionEvent e)
{
// Call the 'funds' function to add funds to the vending machine
calculateFunds(nickel);
}
}
// Dime Button
class DimeButtonListener implements ActionListener
{
// This variable represents a dime
private double dime = 0.10;
// "Who woke me up?" asked the 'actionPerformed' method, and we're telling it that 'e' did, which is an 'ActionEvent' object
public void actionPerformed(ActionEvent e)
{
// Call the 'funds' function to add funds to the vending machine
calculateFunds(dime);
}
}
// Quarter Button
class QuarterButtonListener implements ActionListener
{
// This variable represents a quarter
private double quarter = 0.25;
// "Who woke me up?" asked the 'actionPerformed' method, and we're telling it that 'e' did, which is an 'ActionEvent' object
public void actionPerformed(ActionEvent e)
{
// Call the 'funds' function to add funds to the vending machine
calculateFunds(quarter);
}
}
// One Dollar Button
class OneDollarButtonListener implements ActionListener
{
// This variable represents one dollar
private double oneDollar = 1.00;
// "Who woke me up?" asked the 'actionPerformed' method, and we're telling it that 'e' did, which is an 'ActionEvent' object
public void actionPerformed(ActionEvent e)
{
// Call the 'funds' function to add funds to the vending machine
calculateFunds(oneDollar);
}
}
// Five Dollars Button
class FiveDollarsButtonListener implements ActionListener
{
// This variable represents five dollars
private double fiveDollars = 5.00;
// "Who woke me up?" asked the 'actionPerformed' method, and we're telling it that 'e' did, which is an 'ActionEvent' object
public void actionPerformed(ActionEvent e)
{
// Call the 'funds' function to add funds to the vending machine
calculateFunds(fiveDollars);
}
}
// Other Buttons
// Purchase Button
class PurchaseButtonListener implements ActionListener
{
// Declare your variables here
String itemNumber = ""; // When the end user submits an item number, this variable will capture that item number
String fundsDouble = String.valueOf(funds); // This is the end user's funds that they're going to be purchasing with
String message = "";
// "Who woke me up?" asked the 'actionPerformed' method, and we're telling it that 'e' did, which is an 'ActionEvent' object
@Override
public void actionPerformed(ActionEvent e)
{
// Get the item number
itemNumber = view.getItemNumber();
// Send 'itemNumber' to a method that will handle its purpose
model.calculatePrice(itemNumber, fundsDouble);
// POSSIBLY, WE CAN SEND OUR MESSAGE TO THE VIEW FROM HERE
displayChange();
}
}
// Cancel Button
class CancelButtonListener implements ActionListener
{
// "Who woke me up?" asked the 'actionPerformed' method, and we're telling it that 'e' did, which is an 'ActionEvent' object
public void actionPerformed(ActionEvent e)
{
// Send a good bye message to the end user
view.displayMessage("Your money has been returned to you. Goodbye!");
// Now quit the application
System.exit(0);
}
}
}
azurefrog solved the issue. (Their answer is in the comments of the question.) I needed to set fundsDouble
to the running total variable, funds
, in the calculateFunds
method.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.