[英]Reading data from a txt file in Java, using a specific character to be the end point of each iteration
我想從.txt文件中讀取數據,該文件包含用於初始化名為Supplier的類的對象的信息。 該文件將具有以下格式,每一行如下所示:
公司名稱電話
產品價格數量
產品價格數量
....
產品價格數量
公司名稱電話
產品價格數量
產品價格數量
....
產品價格數量
公司名稱電話等
在以下格式中,一個公司將擁有比其他公司更多的產品-沒有模式,只有許多公司使用不同的產品。
數據將以這種方式使用:
<Product, quantity>
映射容器。 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.