缓冲读取器 "Unknown Source"
BufferedReader "Unknown Source"
我正在尝试读取一个包含产品描述、产品代码和产品价格的文件。我有它,所以它会在每个新行中设置 Product 的变量,直到它等于 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.");
}}
但是在获取文件中的下一个产品(梨)时出现错误:
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)
文件是这样设置的:
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);
}
在循环的每次迭代中,您调用 readLine()
4 次,但您的文件格式似乎每个 "product" 只有 3 行。显然,您对 readLine()
的调用之一是多余的。提示:它是您忽略其 return 值的那个。
我正在尝试读取一个包含产品描述、产品代码和产品价格的文件。我有它,所以它会在每个新行中设置 Product 的变量,直到它等于 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.");
}}
但是在获取文件中的下一个产品(梨)时出现错误:
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)
文件是这样设置的:
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);
}
在循环的每次迭代中,您调用 readLine()
4 次,但您的文件格式似乎每个 "product" 只有 3 行。显然,您对 readLine()
的调用之一是多余的。提示:它是您忽略其 return 值的那个。