bioger_hit 发表于 2018-7-5 10:45 nline肯定没什么问题,是用来记录行号的,我想是因为每个文件的开头都有一段英文,但是程序中我明明跳过了开头,程序却依然未跳过除第一个文本以外其他文本的开头。 |
本帖最后由 bioger_hit 于 2018-7-5 10:49 编辑 1601365 发表于 2018-7-4 21:39 先定位错误,把数据找出来。然后调试程序,修改为兼容即可。一个if else,考虑到异常的数据。 for (line<-source){ nline+=1.0 println(nline.toInt) println(line) if (nline>=line_Number+2.0){ data+=line.toDouble } 比如上面 println(nline.toInt),这里直接转换为int,你确定都是整形吗? 如果转换失败,就会出异常,首先做个类型判断,如果不是这个类型,你该如何处理。 类型判断这个不用说了吧。 如果是整形执行下面内容 if (nline>=line_Number+2.0){ data+=line.toDouble } 如果不是,在另做处理 |
NumberFormatException说明是非法字符转换为数据类型。在文本中体现出来就是每个文本的开始,1-11行都有一段英文说明。测试程序只能操作一个文本,操作第二个文本时就会出现异常,说明此时并未执行“跳过英文说明”部分,并将数据存入data的过程。很可能是这个问题,但不知道该怎么解决。 |
先采用测试数据。可能是数据不规则,程序不能兼容,导致异常错误。数据不能再读下去。归根结底,可能是没有考虑异常。 |