2014-11-15 2 views
0

У меня есть общий итог в моем контроллере, который будет отслеживать деньги, которые конечный пользователь вставил с помощью нажатия кнопок. Когда конечный пользователь нажимает кнопку «покупка», общая сумма присваивается строковой переменной, которая будет отправлена ​​в модель; однако строковая переменная не поддерживает то же значение, что и текущая общая переменная. Я вылил из отладки 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); 
     } 
    } 
} 
+0

Вы говорите, что 'fundsDouble' - ваше общее количество, но вы не обновляете его нигде в своем коде. После того, как вы подсчитаете цену товара, вам нужно обновить 'fundsDouble' с новой суммой. – azurefrog

+0

Нет, «fundsDouble» будет содержать строковую версию «фондов», мою текущую общую переменную. «фонды» - это текущая общая переменная, и она отлично работает. Это «moneyDouble», это преступник, и я не знаю, почему он не работает. – MatthewS

+0

Возможно, вы не передаете значения модели? – Jayan

ответ

0

azurefrog решил проблему. (Их ответ в комментариях к вопросу.) Мне нужно было установить fundsDouble текущей переменной, funds, в методе calculateFunds.

Смежные вопросы