2015-10-16 28 views
0

我正在模擬自動售貨機的程序,它需要從.txt文件中提取數據並在程序中使用該信息。我希望它要求用戶輸入他們的金額並給他們改變。我想將價格存儲在二維數組以及物品名稱中,然後讓用戶選擇要購買的物品。我不知道如何去做這個!我真的需要一些幫助,這是我迄今爲止。使用文件數據的模擬自動售貨機程序

Code: 

    import java.util.*; 
    import java.io.File; 
    import java.io.FileNotFoundException; 

    public class Vending 
    { 
     public static void main(String[] args) throws FileNotFoundException 
     { 
      System.out.print("Enter your food selection file: ");  // User inputs file 
      Scanner input = new Scanner(System.in);      // Keyboard input from user 
      Scanner fs = new Scanner(new File(input.nextLine()));   // Scans in the file that was inputed 
     }   
      double price = 0; 
      while(fs.hasNextLine()){ 
       fs.next(); 
       price = fs.nextDouble(); 

       System.out.print(price); 
     } 
     } 

項目列表文件(Food.txt):

1        Honey roasted peanuts 
1.50  Cheetos 
1.50  Bugles 
2        Synder’s Pretzels 
1        Snickers 
1        Twix 
1.25  M n Ms 
.75     Life savers 
1        Twizzlers 
1        Nutter Butters 
1        Butter Fingers 
1.50  King Size Kit Kats 
1.25  Carrot sticks 
.50     Juicy Fruit 
.50     Spearmint Gum 
.50     Five gum 
3.50  Pepperoni 
1.75  Cheez-Its 
.25     Slim Jim 
1.50  Lays Barbeque Chips 
+0

你必須使用一個二維數組,或者你可以創建一個簡單的'Item'類同時擁有'itemName'和'itemPrice'? – Keith

+0

嗨,歡迎來到Stack Overflow!你所問的問題是相當廣泛的(你想知道如何存儲價格,如何處理用戶輸入等等)。這可能是值得開始的,也許通過讀取價格,我已經開始做,然後將它們添加到數據結構並輸出到屏幕上。其他問題,如http://stackoverflow.com/questions/19844649/java-read-file-and-store-text-in-an-array可能會給你一些指示。 –

回答

1

這裏有一些想法:

  • 取而代之的是2-d陣列,創建一個簡單的Item POJO 包含項目的名稱和價格。
  • 在輸入文件的每一行中讀取 併爲每個輸入創建一個Item
  • 將每個數據存儲在一個數組中。
  • 而不是讓用戶輸入他們想要的物品的確切名稱,模擬真正的自動售貨機併爲每個物品分配一個號碼。 例如,遍歷數組,並讓每個索引代表「項目 數字」,然後打印出項目的價格和名稱。
  • 現在你可以有你的應用程序的主要功能:
    • 閱讀文件並創建陣列
    • 打印出來的選項
    • 要求用戶選擇一個選項
    • 向用戶提供金錢
    • 「返回」產品(即打印「這裏是您的項目」)
    • 計算並「返回」更改(即打印「這裏是您的$ X.XX回「)

下面是使用Item對象的變化計算僞代碼:

double calculateChange(Item item, double money) { 
    double price = item.getPrice(); 
    // if assignment needs to handle "money < price", do so here 
    return money - price; 
} 
相關問題