目标VM发生异常:对于输入字符串:" 1" java.lang.NumberFormatException

时间:2015-08-08 18:12:15

标签: java string

我是.net开发人员,刚开始使用Java开发。

br = new BufferedReader(new FileReader(filePath));
while ((sCurrentLine = br.readLine()) != null) {
    int vertIdx = sCurrentLine.trim().indexOf(space);
    String ver = sCurrentLine.trim().substring(0,vertIdx);
    int vrtInt = Integer.parseInt(ver.trim()); // Here is the error
    //Code Continues
}

在Integer.parseInt(ver.trim())中,我收到以下异常:

Exception occurred in target VM: For input string: "1" 
java.lang.NumberFormatException: For input string: "1"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.parseInt(Integer.java:615)
    at kosaraju.Graph.createGraph(Graph.java:75)
    at kosaraju.Graph.main(Graph.java:247)

在此执行时,我对sCurretline的价值是" 1 4"和ver是" 1" 我无法弄清楚这么小的问题。有人可以指出我的代码中的错误吗?

这是我的观察窗口:

enter image description here

2 个答案:

答案 0 :(得分:2)

根据结果[65279, 49],您的文字似乎以Zero Width No-Break Space开头,无法修剪,因为它不被视为空格,也不会被解析为数字。

您需要将其删除,例如replaceAll("[^\\d+-]",""),这将删除任何不是digit+-的字符。

答案 1 :(得分:0)

您需要删除.replaceAll(“[^ 0-9]”,“”)

字符。

br = new BufferedReader(new FileReader(filePath));
while ((sCurrentLine = br.readLine()) != null) {
    int vertIdx = sCurrentLine.trim().indexOf(space);
    String ver = sCurrentLine.trim().substring(0,vertIdx);
    ver=ver.replaceAll("[^0-9]", "");
    int vrtInt = Integer.parseInt(ver.trim()); // Here is the error
    //Code Continues
}