简体   繁体   English

为什么我的总运转不正常?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM