我正在编写一个跟踪库存的简单程序。我有一个名为“inventory-txt”的输入文件需要扫描并创建一个对象。该文件如下所示:
(项目,数量,价格)
pen 1000 2
记事本1050 5
画笔500 3
剪刀398 4
橡皮擦199 2
纸张重量50 3
订书机 - 小100 5
订书机 - 大50 8
marker 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);
文件已成功扫描,但我很难创建每个对象。每个对象都应该拥有自己的名称,数量和价格。请帮我弄清楚如何创建这些对象!
答案 0 :(得分: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
}
答案 1 :(得分: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
)。
答案 2 :(得分: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]]