[英]Why isn't my running total working?
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. 我已经遍历了Eclipse的调试并遍历了代码,但这超出了我的范围。 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'. 包含运行总计值的字符串称为“ 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. azurefrog解决了这个问题。 (Their answer is in the comments of the question.) I needed to set fundsDouble
to the running total variable, funds
, in the calculateFunds
method. (他们的答案在问题的评论中。)我需要在calculateFunds
方法中将fundsDouble
设置为运行总计变量funds
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.