从Java文本文件中读取输入



我需要编写一个方法,从.txt文件读取并创建一个新的"InventoryItem"对象并将其添加到"Warehouse"对象。Warehouse类创建了InventoryItem的数组列表。我正在使用扫描器从文本文件中读取,但不明白如何将这些值带入我创建的新Warehouse对象中。

文本文件如下:

Purple Widget
1234 17.95 150

我的方法:

public Warehouse readInventoryFile(File inputFile) throws FileNotFoundException {
    Warehouse warehouse1 = new Warehouse();
    Scanner in = new Scanner(inputFile);
    while(in.hasNext()) {
    String item = in.nextLine();
    int sku = in.nextInt();
    double price = in.nextDouble();
    int stock = in.nextInt();
    String nextLine = in.nextLine();
}
    return warehouse1;

}

inventory类:

public class InventoryItem{
    private final int sku;
    private final String item;
    private double price;
    private int stock;
public InventoryItem(int sku, String item, double price, int stock){
    this.sku = sku;
    this.item = item;
    this.price = price;
    this.stock = stock;
  }//InventoryItem constructor
  public int getSku(){
    return sku;
  }//getSKU
  public String getItem(){
    return item;
  }//getItem
  public void setPrice(double price){
    this.price = price;
  }//setPrice
  public double getPrice(){
    return price;
  }//getPrice
  public void setStock(int stock){
    this.stock = stock;
  }//setStock
  public int getStock(){
    return stock;
  }//getStock

        @Override
  public String toString(){
    return String.format("[%d, %s, %1.2f, %d]", sku, item, price, stock);
  }//toString
  public static void main(String[] args){
    InventoryItem itemName = new InventoryItem(1234, "crackers", 2.50, 4);
    itemName.toString();
  }//main
}//InventoryItem

仓库类:

import java.util.ArrayList;
public class Warehouse {
    private final ArrayList<InventoryItem> inventory;
    public Warehouse() {
        inventory = new ArrayList<>();
    }//constructor
    public void addItem(InventoryItem item) {
        inventory.add(item);
    }//addItem
    private int findHelper(int sku) {
        int index = 0;
        while (index < inventory.size()) {
            if (sku == inventory.get(index).getSku()) {
                return index;
            }//if
            index++;
        }//while
        return -1;
    }//findHelper
    public InventoryItem findItem(int sku) {
        int index = findHelper(sku);
        return inventory.get(index);
    }//findItem
    public InventoryItem removeItem(int sku) {
        int index = findHelper(sku);
        return inventory.remove(index);
    }//removeItem
    public void updateItemQuantity(int sku, int stock) {
        int index = findHelper(sku);
        inventory.get(index).setStock(stock);
    }//updateItemQuantity
    public void updateItemPrice(int sku, double price) {
        int index = findHelper(sku);
        inventory.get(index).setPrice(price);
    }//updateItemPrice
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < inventory.size(); i++) {
            sb.append(inventory.get(i).toString()).append(", ");
        }//for
        return this.inventory.toString();
    }//toString
    private int seqSearchRecHelper(int sku, int index) {
        if (index < inventory.size()) {
            if (sku == inventory.get(index).getSku()) {
                return index;
            }//if sku ==
            return seqSearchRecHelper(sku, index + 1);
        }//if index
        return -1;
    }//seqSearchHelper
    public InventoryItem seqSearchRec(int sku) {
        int i = seqSearchRecHelper(sku, 0);
        if (i == -1) {
            return null;
        }//if
        return inventory.get(i);
    }//seqSearchRec
    public void selectSort() {
        int largestIndex;
        int largest;
        //for (int i = inventory.size() - 1; i > 0; i--) {
        for(int i = 0; i<inventory.size(); i++){
            largest = inventory.get(0).getSku();
            largestIndex = i;
            for (int j = i+1; j < inventory.size(); j++) {
                if (largest < inventory.get(j).getSku()) {
                    largest = inventory.get(j).getSku();
                    largestIndex = j;
                    //largest++;
                }//if
            }//for j
            InventoryItem temp = inventory.get(i);
            inventory.set(i, inventory.get(largestIndex));
            inventory.set(largestIndex, temp);
        }//for i
    }//selectSort 
    public InventoryItem binSearch(int sku) {
        return binSearchHelper(sku, 0, inventory.size()-1);
    }//binSearch
    private InventoryItem binSearchHelper(int sku, int start, int end) {
        if(start>end){return null;}
        int mid=(start+end)/2;
        if(sku == inventory.get(mid).getSku()){return inventory.get(mid);}
        if(sku<inventory.get(mid).getSku()){return binSearchHelper(sku, start, mid-1);}
        return binSearchHelper(sku, mid+1, end);

    }//binSearchHelper
    public int size() {
        return inventory.size();
    }
    /**
     *
     * @param index
     * @return 
     */
    public InventoryItem getItem(int index) {
        return inventory.get(index);
    }
    public static void main(String[] args) {
        Warehouse item = new Warehouse();
        Warehouse item2 = new Warehouse();
        item.addItem(new InventoryItem(10, "crackers", 2.00, 10));
        item.addItem(new InventoryItem(11, "chips", 4.99, 300));
        item.addItem(new InventoryItem(1, "toothpicks", 0.39, 600));
        System.out.println("All items (toString): " + item);
        System.out.println("Item sku 10: " + item.findItem(10));
        System.out.println("Item sku 11: " + item.findItem(11));
        System.out.println("Item sku 1: " + item.findItem(1));
        item.updateItemQuantity(10, 11);
        item.updateItemQuantity(11, 400);
        item.updateItemQuantity(1, 599);
        System.out.println();
        System.out.println("Quantity updated (sku 10): " + item.findItem(10));
        System.out.println("Quantity updated (sku 11): " + item.findItem(11));
        System.out.println("Quantity updated (sku 1): " + item.findItem(1));
        item.updateItemPrice(10, 3.00);
        item.updateItemPrice(11, 3.99);
        item.updateItemPrice(1, 0.49);
        System.out.println();
        System.out.println("Price updated - sku 10: " + item.findItem(10));
        System.out.println("Price updated - sku 11: " + item.findItem(11));
        System.out.println("Price updated - sku 1: " + item.findItem(1));
        System.out.println();
        System.out.println("seqSearchRec - sku 10: " + item.seqSearchRec(0));
        System.out.println("seqSearchRec - sku 11: " + item.seqSearchRec(1));
        System.out.println("seqSearchRec - sku 1: " + item.seqSearchRec(2));
        System.out.println();
        System.out.println("All items updated (toString): " + item);
        //System.out.println("Items to remove: " + item.removeItem(10) + item.removeItem(11));
        //System.out.println("Items left in inventory: " + item);
        //item.selectSort();
        //System.out.println("SelectSort: " + item);
        System.out.println("seqSearchRec (expected null): " + item.seqSearchRec(2));
        System.out.println("seqSearchRec - sku 1: " + item.seqSearchRec(1));
        System.out.println("seqSearchRec - sku 10: " + item.seqSearchRec(10));
        System.out.println("seqSearchRec - sku 11: " + item.seqSearchRec(11));
        System.out.println("binSearch 10: " + item.binSearch(10));
        System.out.println("binSearch 11: " + item.binSearch(11));
        item.selectSort();
        System.out.println("selectSort: " + item);
        System.out.println(item.size());
        System.out.println(item.getItem(1));
    }//main
}//Warehouse

您需要在将InventoryItem添加到仓库对象之前创建它:

public Warehouse readInventoryFile(File inputFile) throws FileNotFoundException {
Warehouse warehouse1 = new Warehouse();
Scanner in = new Scanner(inputFile);
while(in.hasNext()) {
String item = in.nextLine();
int sku = in.nextInt();
double price = in.nextDouble();
int stock = in.nextInt();
String nextLine = in.nextLine();
InventoryItem myItem = new InventoryItem(sku, item, price, stock);
warehouse1.addItem(myItem);
}

相关内容

  • 没有找到相关文章

最新更新