arrays - 从文件创建对象并将它们存储到数组列表中。文件就像 (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”。
解决方案
作为一般做法,您应该在处理输入的代码中更具防御性。在这种特殊情况下,您在异常中显示的数字字符串中有一个前导空格。您可以通过以下方式解决该问题:
...
int y = Integer.parseInt(value[1].trim());
...
这将处理前导和尾随空格,但如果数字格式不正确,程序仍会抛出异常。我建议将解析放在 try/catch 块中,当出现异常时,您可以在其中设置合理或有意义的默认值。
推荐阅读
- c++ - 在 Microsoft MFP(媒体基础平台)上绘图
- php - PHP HTTP 426 - file_get_contents 与 curl
- linux - 无法在 shell 命令中打印临时变量
- php - 将数据批量导入 mysql 数据库导致 504 网关超时。(PHP 和 CI)
- php - 通过 PHP 检查 client_ip 时,我仍然通过 Tor 收到我的 IP 地址
- android - java.lang.IllegalArgumentException:服务未注册
- python-3.x - 仅当相应列不包含所选关键字时才选择这些行
- mysql - 如何在docker下创建测试数据库?
- java - 如何生成 2 位远程 PIN 码?
- javascript - 无法公开电子邮件中引用的公共页面以让用户在 Vue JS、Node JS 和 Mongo db 网站结构中重置密码