我想从.txt文件中读取数据,该文件包含初始化名为Supplier的类的对象的信息。该文件将具有以下格式,每行如下所示:
公司名称电话
产品价格数量
产品价格数量
...
产品价格数量
公司名称电话
产品价格数量
产品价格数量
...
产品价格数量
公司名称电话 等等。
采用以下格式,一家公司的产品数量将超过其他公司 - 没有模式,只有许多公司拥有不同的产品。
数据将以这种方式使用:
<Product, quantity>
新创建的供应商对象地图容器。 <Product, quantity>
行的地图Product price 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了解不多。谢谢!
答案 0 :(得分:1)
了解何时到达供应商末尾的一种方法可能是通过在循环开始时检查一个唯一的字符或字符串,如果它相等,则添加供应商。您也可以使用手机#。
获得多少产品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
我假设它是一部电话#。