2014-05-11 45 views
0

我在写一个简单的程序来跟踪库存。我有一个名为“inventory-txt”的输入文件需要扫描并创建一个对象。文件看起来像这样:通过扫描输入文件创建对象?

(项目,控管数量,价格)

笔1000 2

记事本1050 5

油漆刷500 3

剪刀398 4

橡皮擦199 2

纸张重量50 3

订书机小100 5

订书机大50 8

标记1000 2

这是我走到这一步:

public class Item { 
    private String name; 
    private int quantity; 
    private double pricePerUnit; 

// Constructor for class Item 
Item(String name, int quantity, double pricePerUnit){ 
    this.name = name; 
    this.quantity = quantity; 
    this.pricePerUnit = pricePerUnit; 
} 

// Setter method for name 
public void setName(String name){ 
    this.name = name; 
} 
// Getter method for name 
public String getName(){ 
    return name; 
} 

// Setter method for quantity 
public void setQuantity(int quantity){ 
    this.quantity = quantity; 
} 
// Getter method for quantity 
public double getQuantity(){ 
    return quantity; 
} 

// Setter method for price per unit 
public void setPricePerUnit(double pricePerUnit){ 
    this.pricePerUnit = pricePerUnit; 
} 
// Getter method for price per unit 
public double getPricePerUnit(){ 
    return pricePerUnit; 
} 

}

public static void main(String[] args) { 
    // To re-factor the Inventory management program 
    // Task 2.a.i. 
    File inputFile; 
    Scanner Input = null; 
    try{ 
     inputFile = new File("Assignment13-inventory.txt"); 
     Input = new Scanner(inputFile); 
     while(Input.hasNext()){ 
      String name = Input.next(); 
      int quantity = Input.nextInt(); 
      double pricePerUnit = Input.nextDouble(); 
      System.out.println(name); 
      System.out.println(quantity); 
      System.out.println(pricePerUnit); 


     } 


    } catch(FileNotFoundException e){ 
     System.out.println("File does not exist"); 
     } 

    Input.close(); 

    // Task 2.a.ii. 

Item item1 = new Item(); 
item1.setName(name); 
System.out.println(item1.getName()); 
item1.setPrice(price); 
item1.setPricePerUnit(pricePerUnit); 

f ile已成功扫描,但我在创建每个对象时遇到困难。每个对象应该有自己的名称,数量和价格。请帮我弄清楚如何创建这些对象!

回答

1

创建一个List来保存您的对象,然后在读取输入后调用构造函数。

public static void main(String[] args) { 
    List<Item> myItems = new ArrayList<Item>(); 
    // .... Other code. 
    String name = Input.next(); 
    int quantity = Input.nextInt(); 
    double pricePerUnit = Input.nextDouble(); 
    myItems.add(new Item(name, quantity, pricePerUnit)); 
    // ... Other code 
} 
0

您希望创建新项目并在循环浏览文件时存储它们。

使用您提供的数据查看此Ideone Example

Scanner s = new Scanner("Assignment13-inventory.txt"); 
List<Item> items = new ArrayList<Item>(); 

while(s.hasNext()){ 
    String name = s.next(); 
    int quantity = s.nextInt(); 
    double pricePerUnit = s.nextDouble(); 
    items.add(new Item(name, quantity, pricePerUnit)); 
} 
s.close(); 

作为一个侧面说明,避免给变量一个大写字母,因为这些应为类名(在你的代码例如Input)保留。

0

请记住放置完整路径来查找文件,而不仅仅是文件名。

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.Scanner; 

public class Test 
{ 

    public static void main(String[] args) 
    { 
     // To re-factor the Inventory management program 
     // Task 2.a.i. 
     File inputFile; 
     Scanner Input = null; 
     try 
     { 
      List<Item> items = new ArrayList<Item>(); 
      inputFile = new File("/full/location/of/the/file/Assignment13-inventory.txt"); 
      Input = new Scanner(inputFile); 
      while (Input.hasNext()) 
      { 
       String name = Input.next(); 
       int quantity = Input.nextInt(); 
       double pricePerUnit = Input.nextDouble(); 
       System.out.println(name); 
       System.out.println(quantity); 
       System.out.println(pricePerUnit); 
       System.out.println("Creating the item and adding it to the list of items:"); 
       items.add(new Item(name, quantity, pricePerUnit)); 
      } 

      System.out.println("These are the items read:"); 
      System.out.println(items); 

     } 
     catch (FileNotFoundException e) 
     { 
      System.out.println("File does not exist"); 
     } 

     Input.close(); 
    } 
} 

class Item 
{ 
    private String name; 
    private int quantity; 
    private double pricePerUnit; 

    // Constructor for class Item 
    public Item(String name, int quantity, double pricePerUnit) 
    { 
     this.name = name; 
     this.quantity = quantity; 
     this.pricePerUnit = pricePerUnit; 
    } 

    // Setter method for name 
    public void setName(String name) 
    { 
     this.name = name; 
    } 

    // Getter method for name 
    public String getName() 
    { 
     return name; 
    } 

    // Setter method for quantity 
    public void setQuantity(int quantity) 
    { 
     this.quantity = quantity; 
    } 

    // Getter method for quantity 
    public double getQuantity() 
    { 
     return quantity; 
    } 

    // Setter method for price per unit 
    public void setPricePerUnit(double pricePerUnit) 
    { 
     this.pricePerUnit = pricePerUnit; 
    } 

    // Getter method for price per unit 
    public double getPricePerUnit() 
    { 
     return pricePerUnit; 
    } 

    @Override 
    public String toString() 
    { 
     return "Item [name=" + name + ", quantity=" + quantity + ", pricePerUnit=" + pricePerUnit + "]"; 
    } 


} 

这是输出:

pen 
1000 
2.0 
Creating the item and adding it to the list of items: 
notepad 
1050 
5.0 
Creating the item and adding it to the list of items: 
paint-brush 
500 
3.0 
Creating the item and adding it to the list of items: 
scissors 
398 
4.0 
Creating the item and adding it to the list of items: 
eraser 
199 
2.0 
Creating the item and adding it to the list of items: 
paper-weight 
50 
3.0 
Creating the item and adding it to the list of items: 
stapler-small 
100 
5.0 
Creating the item and adding it to the list of items: 
stapler-large 
50 
8.0 
Creating the item and adding it to the list of items: 
marker 
1000 
2.0 
Creating the item and adding it to the list of items: 
These are the items read: 
[Item [name=pen, quantity=1000, pricePerUnit=2.0], Item [name=notepad, quantity=1050, pricePerUnit=5.0], Item [name=paint-brush, quantity=500, pricePerUnit=3.0], Item [name=scissors, quantity=398, pricePerUnit=4.0], Item [name=eraser, quantity=199, pricePerUnit=2.0], Item [name=paper-weight, quantity=50, pricePerUnit=3.0], Item [name=stapler-small, quantity=100, pricePerUnit=5.0], Item [name=stapler-large, quantity=50, pricePerUnit=8.0], Item [name=marker, quantity=1000, pricePerUnit=2.0]]