簡體   English   中英

變量不會增加,從靜態方法中調用非靜態方法

[英]Variables wont increase, calling non static methods from static method

我正在為一個學校項目創建自動售貨機模擬,但一直無法克服最初的幾個障礙。 該項目的要求之一是擁有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;                    
      }  
    }
  }   
}

您正在使用當前存儲在刻痕,刻痕等中的值來初始化功勞

每次您要求它的價值時它都不會更新

您需要做的是添加一個函數:

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

並打印getCredits()而不是信用

暫無
暫無

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

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