我有一个文本文件,其中前两行是整数m
和n
,然后有m
行,每行都有n
个竖线分隔的值。我编写了一个程序来读取文件并使用文件中的值创建m*n
数组,并且它工作正常数百次,然后突然出现,使用相同的代码,使用相同的文件,它抛出{从第一行读取整数时{1}}。整个代码在这里:
NumberFormatException
真正让我担心的是,相同的代码在此之前和之外都运行良好,结果证明是坏的,所以我甚至无法确定究竟是什么问题......
答案 0 :(得分:1)
两个可能的问题是:
st = Integer.valueOf(rdr.readLine());
el = Integer.valueOf(rdr.readLine());
您需要确保读者正在阅读的内容实际上是Integer
。
尝试以下小修改:
st = Integer.valueOf(rdr.readLine().trim());
el = Integer.valueOf(rdr.readLine().trim());
如果不能解决问题,您需要确保捕获正确的输入。
为了帮助调试问题,将输入保存到字符串并打印它以查看它在尝试解析之前的样子可能会有所帮助:
String stStr = rdr.readLine().trim()
System.out.println(stStr);
st = Integer.valueOf(stStr);
System.out.println(stStr);
String elStr = rdr.readLine().trim();
el = Integer.valueOf(elStr);
如果打印的值不是整数,则输入错误。
答案 1 :(得分:1)
答案 2 :(得分:0)
你没有碰巧以某种方式在文件的第一行之前放置一些特殊字符吗?我知道我曾经遇到过这个问题,我花了很长时间才弄清楚发生了什么。我认为notepad ++会让你看看是否是这种情况。
答案 3 :(得分:0)
如果行为发生了变化,确实发生了变化。
如果代码没有改变,则:
答案 4 :(得分:0)
变化:
st = Integer.valueOf(rdr.readLine());
el = Integer.valueOf(rdr.readLine());
是
String input = rdr.readLine();
try {
st = Integer.valueOf( input);
} catch( NumberFormatException e){
System.out.println( "exception reading " + input );
}
input = rdr.readLine();
try {
el = Integer.valueOf(input);
} catch( NumberFormatException e){
System.out.println( "exception reading " + input );
}
并且您将获得打印出问题字符串的答案。