Java “BufferedReader”;“未知来源”;

Java “BufferedReader”;“未知来源”;,java,arraylist,bufferedreader,Java,Arraylist,Bufferedreader,我试图读取一个包含产品描述、产品代码和产品价格的文件。我有它,它将设置每一行的产品变量,直到它等于null: public class ReadFile { static ArrayList<Product> products = new ArrayList<Product>(); public static void main(String[] args){ String line; try { BufferedReader bu

我试图读取一个包含产品描述、产品代码和产品价格的文件。我有它,它将设置每一行的产品变量,直到它等于null:

public class ReadFile {

static ArrayList<Product> products = new ArrayList<Product>();

public static void main(String[] args){

    String line;

    try {
        BufferedReader bufferedReader = new BufferedReader (new FileReader("C:/Users/Tom/Desktop/data.txt"));

        while ((line = bufferedReader.readLine()) != null){
            Product product = new Product();
            product.setDescription(bufferedReader.readLine());
            product.setProductCode(bufferedReader.readLine());
            product.setUnitPrice(Integer.parseInt(bufferedReader.readLine()));
            System.out.println(product);
            products.add(product);
            }
    bufferedReader.close();
    }   
    catch(IOException e){
        System.out.println("File not found.");

}}
以下是文件的设置方式:

Apple /r 01 /r 99 /r Pear /r 02 /r 88
注:/r用于表示文件中的新行


我哪里出了问题,这样它将创建一个新产品,设置信息并重复,直到行等于null?

您对产品类型读取了两次。只需使用
line
变量的值来设置产品描述

while ((line = bufferedReader.readLine()) != null){
  // line has already stored information about the Product type.
            Product product = new Product();
            product.setDescription(line); // set value using line variable
            // product.setDescription(bufferedReader.readLine()); // error
            product.setProductCode(bufferedReader.readLine());
            product.setUnitPrice(Integer.parseInt(bufferedReader.readLine()));
            System.out.println(product);
            products.add(product);
            }

对于产品类型,您阅读了两次。只需使用
line
变量的值来设置产品描述

while ((line = bufferedReader.readLine()) != null){
  // line has already stored information about the Product type.
            Product product = new Product();
            product.setDescription(line); // set value using line variable
            // product.setDescription(bufferedReader.readLine()); // error
            product.setProductCode(bufferedReader.readLine());
            product.setUnitPrice(Integer.parseInt(bufferedReader.readLine()));
            System.out.println(product);
            products.add(product);
            }

在循环的每次迭代中,调用
readLine()
4次,但您的文件格式似乎每个“产品”只有3行。显然,对
readLine()
的调用是多余的。提示:您忽略了它的返回值。

在循环的每次迭代中,您调用
readLine()
4次,但您的文件格式似乎每个“产品”只有3行。显然,对
readLine()
的调用是多余的。提示:它的返回值被忽略