2015-10-16 27 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; 
} 
相关问题