簡體   English   中英

使用特定字符作為每次迭代的終點,從Java中的txt文件中讀取數據

[英]Reading data from a txt file in Java, using a specific character to be the end point of each iteration

我想從.txt文件中讀取數據,該文件包含用於初始化名為Supplier的類的對象的信息。 該文件將具有以下格式,每一行如下所示:

公司名稱電話

產品價格數量

產品價格數量

....

產品價格數量

公司名稱電話

產品價格數量

產品價格數量

....

產品價格數量

公司名稱電話等

在以下格式中,一個公司將擁有比其他公司更多的產品-沒有模式,只有許多公司使用不同的產品。

數據將以這種方式使用:

  1. 閱讀第一行(公司名稱電話)並初始化對象供應商。
  2. 讀取每一行,直到檢測到新的(公司名稱電話)或特定字符(例如,;或類似字符),並為每行初始化一個Product類型(帶有Productname和price)的對象並將其添加到新創建的Supplier中object通過<Product, quantity>映射容器。
  3. 因此,最后,供應商對象將具有檢測到的每個Product price quantity行的地圖<Product, quantity> ,然后將按照相同的邏輯初始化新的供應商。

我制作了一次從1行讀取並添加所有信息的方法,但是該方法是經過硬編碼的,不適用於不同數量的<Product price quantity>序列。 :(

這是我的代碼,但是正如我所說的,它一次只能讀取一行,因此我不能添加超過1個<Product, quantity>對。

Orders(String suppliersFileName) throws IOException {
    BufferedReader in = new BufferedReader(new FileReader(suppliersFileName)); 
    String line;
    while((line = in.readLine()) != null)
    {
        String[] vars = line.split(" ");
        suppliers.addElement(new Supplier(vars[0], vars[1], vars[2], vars[3], Double.parseDouble(vars[4]), Integer.parseInt(vars[5])));
    }
    in.close();
}

我將不勝感激,因為我對BufferedReaders的了解不多。 謝謝!

知道何時到達供應商末尾的一種方法是,在循環開始時檢查一個唯一的字符或字符串,如果相等,則添加供應商。 同樣,您也可以使用電話號碼獲取產品數量。

String endOfSupplier = "!"; // this can be any thing
while((line = in.readLine()) != null){
    if (line.equals(endOfSupplier)){ // end of supplier
        suppliers.add(supplier); // add supplier to suppliers
        supplier = null; // set to null to show that we are done with it
    }
    if (supplier == null){ // make new supplier when it's null
        supplier = new Supplier(line); // parse phone # to supplier
    }
    else {
        supplier.addProduct(line); // make method that turns string into product and add it to supplier
    }
}

當我將供應商添加到列表中時,它使供應商等於null ,因此我可以分辨是正在閱讀電話#還是產品,因為當它等於null我認為這是電話#。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM