簡體   English   中英

為什么我的總運轉不正常?

[英]Why isn't my running total working?

我的控制器中有一個正在運行的總計,它將跟蹤最終用戶通過單擊按鈕插入的資金。 當最終用戶單擊“購買”按鈕時,運行總計將分配給一個字符串變量,該變量將發送到模型中。 但是,字符串變量的值與運行總計變量的值不同。 我已經遍歷了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);
        }
    }
}

azurefrog解決了這個問題。 (他們的答案在問題的評論中。)我需要在calculateFunds方法中將fundsDouble設置為運行總計變量funds

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM