从文件读取错误:java.lang.NumberFormatException

时间:2011-11-30 11:49:11

标签: java exception

我有一个file.txt,它包含如下行:

  • 461 480 0
  • 461 494 0
  • 461 496 0
  • 461 524 0
  • 461 527 0
  • 461 535 0
  • 461 551 0

461 \ t480 \ t0它们由标签分隔。

我想用java

读取这个文件
String[] splits = line.split("\t");
int userID = Integer.parseInt( splits[0] );

它给了我错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: "461"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)

如何解决此错误?

3 个答案:

答案 0 :(得分:0)

试试这个。

String[] splits = line.split("\t");
int userID = Integer.parseInt( splits[0].trim() );

我认为既然你正在分裂'\ t',那么空格也带有数字,所以“461”最后可能有空格。但是Splits[0]不得为null否则将出现空指针异常。

答案 1 :(得分:0)

如果您的文件包含Windows样式的换行符,您是否可以将其转换为使用unix样式的换行符(大多数文本编辑器可以执行此操作),然后尝试再次读取它。另外,请验证第一行是否发生异常,或者是否正确解析了一行并在第二行抛出异常。

如果所有其他方法都失败了,您应该尝试调试代码。如果您使用eclipse进行开发非常简单,只需在调用split()方法后设置断点,并检查split[0]值。

答案 2 :(得分:-1)

尝试像这样格式化您的文件

  • 461-480-0
  • 461-494-0
  • 461-496-0
  • 461-524-0
  • 461-527-0
  • 461-535-0
  • 461-551-0
line = line.replaceAll("\\s+","");
String [] splits = line.split("-");
int userID= Integer.parseInt(splits[0]);