请教各位老师,文件操作出现问题!

查看数: 4462 | 评论数: 4 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-7-4 20:43

正文摘要:

使用spark开发程序,需要从大量如下格式的txt文本中读取数据,编写程序以后发现只能操作其中单个文本,操作多个文本时只操作了第一个文本,并出现下图中的错误,这说明程序对文件的操作有问题,不是对于每个文本都执 ...

回复

1601365 发表于 2018-7-6 16:32:50
bioger_hit 发表于 2018-7-5 10:45
先定位错误,把数据找出来。然后调试程序,修改为兼容即可。一个if else,考虑到异常的数据。
  for (li ...

nline肯定没什么问题,是用来记录行号的,我想是因为每个文件的开头都有一段英文,但是程序中我明明跳过了开头,程序却依然未跳过除第一个文本以外其他文本的开头。
bioger_hit 发表于 2018-7-5 10:45:50
本帖最后由 bioger_hit 于 2018-7-5 10:49 编辑
1601365 发表于 2018-7-4 21:39
NumberFormatException说明是非法字符转换为数据类型。在文本中体现出来就是每个文本的开始,1-11行都有一 ...

先定位错误,把数据找出来。然后调试程序,修改为兼容即可。一个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
      }

如果不是,在另做处理


1601365 发表于 2018-7-4 21:39:38
NumberFormatException说明是非法字符转换为数据类型。在文本中体现出来就是每个文本的开始,1-11行都有一段英文说明。测试程序只能操作一个文本,操作第二个文本时就会出现异常,说明此时并未执行“跳过英文说明”部分,并将数据存入data的过程。很可能是这个问题,但不知道该怎么解决。
yaojiank 发表于 2018-7-4 20:59:30
先采用测试数据。可能是数据不规则,程序不能兼容,导致异常错误。数据不能再读下去。归根结底,可能是没有考虑异常。
关闭

推荐上一条 /2 下一条