gpt4 book ai didi

java - Java从txt文件中读取数据,使用特定字符作为每次迭代的结束点

转载 作者:行者123 更新时间:2023-12-01 09:17:14 25 4
gpt4 key购买 nike

我想从 .txt 文件中读取数据,该文件包含用于初始化名为“Supplier”的类的对象的信息。该文件将具有以下格式,每一行如下所示:

公司名称电话

产品价格数量

产品价格数量

...

产品价格数量

公司名称电话

产品价格数量

产品价格数量

...

产品价格数量

公司名称 电话等等等等

按照以下格式,一个公司将比其他公司拥有更多的产品 - 没有模式,只是许多公司拥有不同的产品。

数据将以这种方式使用:

  1. 读取第一行(公司名称、电话)并初始化供应商对象。
  2. 读取每一行,直到检测到新的(公司名称电话)或特定字符(例如,;或其他字符),并为每一行初始化一个 Product 类型的对象(包含产品名称和价格)并将其添加到通过 <Product, quantity> 新创建的供应商对象 map 容器。
  3. 所以最终Supplier对象将有一个Map <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 不太了解。谢谢!

最佳答案

了解何时到达供应商末尾的一种方法是在循环开始时检查一个唯一的字符或字符串,如果相等则添加供应商。您也可以只知道带有电话号码的产品数量。

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 时我认为这是一个电话#。

关于java - Java从txt文件中读取数据,使用特定字符作为每次迭代的结束点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40453702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com