2014-10-08 2 views
1

Я создаю моделирование торгового автомата для школьного проекта, и у меня возникли проблемы с прохождением этих первых барьеров. Одним из требований к проекту является наличие 5 глобальных переменных, которые я принимаю как средние переменные, определенные вне любого метода, но внутри класса. Сначала я не смог позвонить никому из них, пока не узнал о «Статическом» и «Объекте», и я обошел эту проблему, создав методы экземпляра, которые обращаются к этим переменным, и создавая объект этих методов экземпляра в мой основной статический метод. Но проблема в том, что мне нужны эти переменные для увеличения, и они не изменятся с 0! Я пытаюсь позволить пользователю «вставить монеты» в машину, но ничего не происходит, когда я пытаюсь. Во всяком случае, вот код, он нигде не закончен, но небольшая помощь и разъяснение в том, что я делаю неправильно, будут высоко оценены. Спасибо!Переменные не будут увеличиваться, вызывая нестатические методы из статического метода

package project3; 

import java.util.Scanner; 

public class Project3 { 
     double nickels = 0.00; 
     double quarters = 0.00; 
     double dimes = 0.00; 
     double dollars = 0.00; 
     double credits = nickels + quarters + dimes + dollars; 
public static void main(String[] args) { 
    Project3 menu = new Project3(); 
    menu.menu(); 
} 
public void menu() { 
     int counter = 0; 
     Scanner input = new Scanner(System.in); 
    while (counter >=0 && counter <=4){ 
     System.out.print("Credit: "+credits +"\n0. Insert Money \n1. Twix: 50¢ \n2. Marathon Bar: $1.00 \n3. Snickers: 75¢ \n4. Return Change \nSelection: "); 
     counter = input.nextInt(); 
     switch (counter) { 
      case 0: getMoney(); 
       break; 
      case 1: 
       break; 
      case 2: 
       break; 
      case 3: 
       break; 
      case 4: 
       break;    
     } 
    } 
} 
public void getMoney(){ 
    int counter = 0; 
    Scanner input = new Scanner(System.in); 
    while (counter >=0 && counter <=4){    
     System.out.print("Credit : " +credits+"\n1. Insert Nickel \n2. Insert Dime \n3. Insert Quarter \n4. Insert Dollar \n5. Return to menu \nSelection: "); 
     counter = input.nextInt(); 
     switch (counter) { 
      case 1: nickels += .05; 
       break; 
      case 2: dimes += .10; 
       break; 
      case 3: quarters += .25; 
       break; 
      case 4: dollars += 1.00;  
       break;      
     } 
    } 
    } 
} 
+0

пихты st all, чтобы его компилировать, попробуйте заменить '.05',' .10', '.25' и т. д. с' 0.05', '0.10' и' 0.25', соответственно. –

ответ

4

Вы инициализация кредитов со значениями в настоящее время хранится в Nickles, кварталах и т.д.

Это не обновляется каждый раз, когда вы запрашиваете его значение

то, что вам нужно сделать, это добавить функцию :

private double getCredits(){ 
    return nickels + quarters + dimes + dollars; 
} 

и печать getCredits(), а не кредитов

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