首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BufferedReader“未知来源”

BufferedReader“未知来源”
EN

Stack Overflow用户
提问于 2018-03-10 17:37:22
回答 2查看 198关注 0票数 0

我正在尝试读取一个包含产品描述、productCode和productPrice的文件。我有它,所以它将用每个新行设置Product的变量,直到它等于null:

代码语言:javascript
复制
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.");

}}

但是,在获取文件中的下一个产品(梨)时,我遇到了一个错误:

代码语言:javascript
复制
Exception in thread "main" java.lang.NumberFormatException: For input string: "Pear"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at controller.ReadFile.main(ReadFile.java:24)

文件的排列方式如下:

代码语言:javascript
复制
Apple /r 01 /r 99 /r Pear /r 02 /r 88

注意: /r用于表示文件中的新行。

我在哪里出错,以便它将创建一个新的产品,设置信息,并重复直到行等于null?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-10 17:44:13

您正在为Product阅读两次。只需使用line变量的值来设置产品描述。

代码语言:javascript
复制
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);
            }
票数 1
EN

Stack Overflow用户

发布于 2018-03-10 17:45:13

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49212041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档