为什么我的跑步总不起作用?

时间:2014-11-15 03:35:45

标签: java model-view-controller controller

我的控制器中有一个运行总计,它将通过点击按钮跟踪最终用户插入的钱。当最终用户点击“购买”按钮时,将运行总计分配给将发送到模型中的字符串变量;但是,字符串变量没有保持运行总变量所持有的值。我倾注了Eclipse的调试并完成了代码,但这超出了我的范围。我将不胜感激任何帮助:)

“购买”按钮的类位于代码段的最底部。保存运行总计值的字符串称为“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);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

azurefrog解决了这个问题。 (他们的答案在问题的评论中。)我需要在fundsDouble方法中将funds设置为正在运行的总变量calculateFunds

相关问题