首页 > 解决方案 > 从文件创建对象并将它们存储到数组列表中。文件就像 (tools = 2000; fixTools=500 等)

问题描述

BufferedReader bin = new BufferedReader(new FileReader("C:\\Users\\ASUS\\eclipse-workspace\\MissionMars\\src\\phase-2"));
String line;

ArrayList <Items> point = new ArrayList<Items>();
while((line=bin.readLine())  != null  ) 
{
    String [] value = line.split(" = ");
    String x=value[0];  
    int y=Integer.parseInt(value[1]);

    Items obj1 = new Items(x,y);

    obj1.setName(x);
    obj1.setWeight(y);

    point.add(obj1);
}

System.out.println(point);

我的程序显示:

java.lang.NumberFormatException:对于输入字符串:“5000”。

标签: arraysstringobjectarraylistbuffer

解决方案


作为一般做法,您应该在处理输入的代码中更具防御性。在这种特殊情况下,您在异常中显示的数字字符串中有一个前导空格。您可以通过以下方式解决该问题:

...
int y = Integer.parseInt(value[1].trim());
...

这将处理前导和尾随空格,但如果数字格式不正确,程序仍会抛出异常。我建议将解析放在 try/catch 块中,当出现异常时,您可以在其中设置合理或有意义的默认值。


推荐阅读