论java从TXT文档中提取某一列中的数字然后相加的方法


                                                                                        

咳咳,标题有点长。直入主题(萌新求轻虐)
当我们获得一个长长长的文档想要提取其中的数字,如下图

       

如果想要用java算出进球的总数(其实用sql更方便,但是我们要秀操作)

以下为简单科普,大牛请直接看最下边的代码

bufferdInputStream输入流

创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。创建一个内部缓冲区数组并将其存储在 buf 中(API

buf:所谓的内部缓冲区数组,之后的输入得先存入其中

FileInputStream(File file)文件输入流

通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定(API)

可以访问文件里的数据,如TXT

BufferedReader字符输入流

BufferedInputStream 为另一个输入流(FileInputStream)添加一些功能,即缓冲输入以及支持 markreset 方法的能力。

在创建 BufferedInputStream 时,会创建一个内部缓冲区数组。(API)

需要用到其中的readLine()方法,Integer包装类(下方有详细介绍~)


代码如下

//路径名,这里注意/和\\

"/" 表示 UNIX 中的根目录,"\\" 表示 Microsoft Windows UNC 路径名。

"\\"是系统盘符"/"的转义字符(这里不要搞反了。。)

                                                                        String pathname = "E:\\txt.txt";

 //写入路径      

            File filename = new File(pathname);
            //创建一个输入流,这里注意编码格式~有坑
            InputStreamReader reader = new InputStreamReader(new FileInputStream(filename),"gbk");

                                                                BufferedReader br = new BufferedReader(reader);//字符输入流

            String line = "";//接收数据
            int sum = 0;
                while(line != null){
                line = br.readLine();//一次读入一行
                //split返回的是一个数组,将line 切割传给每个数组下标
                String pp [] = new String[5];
                //这里注意split会空指针异常,这里得加个判断

                                                                                       if(line ==null ){
                                                                                                break;
                                                                                                               }

                                                                                  pp = line.split(" ");//按空格分隔

//Integer包装类,将split返回的数组pp[5]
               Integer year = Integer.valueOf(pp[4].substring(0, 1));//不取4
                            sum += year.intValue();                         
            }

                                                                        System.out.println("sum:"+sum);

                                                                                        

//有点凌乱,,如有错误还请不吝赐教~

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值