2013-10-30 101 views
0

我需要幫助瞭解如何將變量從一個類鏈接到我的主類,它似乎在我以前使用的代碼的某些情況下工作,但我不清楚如何有用。在這種情況下,Dollar變量需要從測試儀類中的main方法中提取integer,該方法來自掃描儀輸入。另外我該如何實現我的while循環,並讓它調用其他方法,以便打印所需的變量。這個程序的重點是找出你可以用固定金額獲得的最大酒吧,假設每個酒店有1美元,每個酒吧有一張優惠券,6張優惠券可以免費獲得一張酒吧(裏面有1張優惠券)。我是一個初學者,我不知道下一步該去哪裏。雖然循環使用,使用掃描儀輸入變量

public class VendingMachine 
     { 
      public static int dollars; 
      public static int coupons = dollars; 
      public static int bars = dollars; 

    public VendingMachine (int x) 
        { 
        dollars = x; 

        } 
    public VendingMachine() 
        { 
        this (0); 
        } 

    public static void Bars() 
     { 
      int newbars; 
      newbars = coupons/6; 
      bars = bars + newbars; 

     } 

    public static void Coupons() 
     { 
      int newcoupons; 
      newcoupons = (coupons % 6) +(coupons/6); 
      coupons = newcoupons + coupons; 
     } 


    } 

    import java.util.*; 



    public class VendMachineTest{ 


    public static void main(String[]args, int coupons) 

    { 
     Scanner user_input = new Scanner(System.in); 

     int dollars; 
     System.out.println("Amount of Cash?"); 
     dollars = user_input.nextInt(); 

     VendMachineTest totalbars = new VendMachineTest(); 
     while (coupons >= 6) 
     {  
      VendMachineTest.Bars(); 
      VendMachineTest.Coupons(); 
     } 
    } 

    System.out.println(dollars +""+coupons+""+bars+""); 
    } 

回答

1

發佈的代碼有很多語法錯誤。要糾正這些錯誤,你應該考慮以下幾點:

  • 雖然不是錯誤,方法名稱應以小寫字符開始(按照良好的編程習慣)
  • 您在類聲明兩個公共類, (假設你在一個文件中使用兩個類)
  • 你正在聲明變量(優惠券和酒吧)爲一個未分配的變量(使用public int coupons,bars;就足夠了)。
  • 您的主要方法是將int(優惠券)作爲主要方法不會註冊到JVM,因此它不會允許您運行該程序。
  • 該程序會創建一個新的VendMachineTest對象,該對象在應用程序期間未使用。

  • 在你的自動售貨機類,你通過,這將產生一個雙(可能的精度損失)將int劃分爲int

你想用內部類,顯示的值。

public class VendMachineTest{ 

    public static void main(String[] args){ 
      //insert your test method here 
    } 

    private class VendingMachine{ 
     public double coupons, dollars, bars; // declare the variable 
     // values declared here can be used in the VendMachineTest 
    } 

} 

另外,如果您沒有將VendingMachine類中的方法聲明爲靜態,會更好。如果您創建新的VendingMachine對象

VendingMachine vendingMachine = new VendingMachine(dollars); 

您可以使用vendingMachine.getBars()而不是使用類名稱。

0

不知道你的程序是應該做的,但....

  1. 你不應該使用「靜態」,這實在是用於恆變量。

    public static int dollars; 
    public static int coupons = dollars; 
    public static int bars = dollars; 
    
  2. 這種構造在你的程序中沒有的功能

    public VendingMachine() 
    { 
        this (0); 
    } 
    
  3. 「%」是模運算符,這是用於獲取餘...我不認爲這就是你的是什麼想在這裏做。

    newcoupons = (coupons % 6) +(coupons/6); 
    
  4. 在這裏,您要創建「自動售貨機」,而不是測試類的一個實例。

    VendMachineTest totalbars = new VendMachineTest(); 
    

也許你試圖實現沿此線的東西?

public class VendingMachine 
{ 
public int dollars; 
public int coupons; 
public int mybars = 0; 

public VendingMachine (int d,int c) 
{ 
    dollars = d; 
    coupons = c; 
} 

public void buy_One_Bar() 
{ 

    if(coupons >5) //I get a free bar? 
    { 
     mybars++; // mybars = mybars + 1; 
     coupons = coupons - 6; 

    }else{ 
     dollars--; //Decrease amount of dollars by 1 
     mybars++; //You gain a bar 
     coupons++; //You gain a coupon 

    } 

} 

public int getBars() 
{ 
    return mybars; 
} 

public int getDollars() 
{ 
    return dollars; 
} 

public int getCoupons() 
{ 
    return coupons; 
} 

    } 

import java.util.Scanner; 

public class VendMachineTest{ 

public static void main(String[]args) 

{ 
    Scanner user_input = new Scanner(System.in); 

    int starting_dollars; 
    int starting_coupons; 

    System.out.println("Amount of Cash?"); 
    starting_dollars = user_input.nextInt(); 
    System.out.println("How many coupons do you have?"); 
    starting_coupons = user_input.nextInt(); 

VendingMachine vm = new VendingMachine(starting_dollars, starting_coupons); 

vm.buy_One_Bar(); //Buy some bars 

//Print out what you have... 
System.out.println("Your Dollars :"+ vm.getDollars()); 
System.out.println("Amount of Coupons:"+ vm.getCoupons()); 
System.out.println("Amount of Bars you have:"+ vm.getBars()); 
} 


}