比赛,scanner太慢了,想用BufferedReader输入大量数据,多行输入,输入格式是xxx   xxx xxx,
可是readLine()会把一整行都输入进去,我想一个一个读数据,求大佬教一下

解决方案 »

  1.   

    只要他有数据格式, 有霍规律的, 读一行还是多行没有影响的, 
    比如: XML格式, JSON,或者逗号分隔, 或者tab键 总是有格式定义的, 读出来都是一个字符串, 没有必要一定换行.
    象我们是这种格式: 
    121504174||1||1552533105||1552532419||686||1||||||1552533125
    读出来之后用代码:String str ="121504174||1||1552533105||1552532419||686||1||||||1552533125";
    String[] arg = strNum.split(str);

      

  2.   


    String str ="121504174||1||1552533105||1552532419||686||1||||||1552533125";
    String[] arg = strNum.split("||");

      

  3.   


    想一个一个数据读取干么用bufferedreader啊?可以用dateinputstream,可以readchar,readint等等方法一个一个读取各种基本类型,前提是你知道要读取的数据是什么类型,不然读出来的会是乱码。
      

  4.   

    谢谢大佬。我试了一下,还是跑不过...准备换cpp了,反正差不多
      

  5.   


    cpp 比java是快些, 但是目前大数据分析的开发语言spark 就是 java的变种, 也是运行在jvm中. c++可不是对手.
    不过c++在单程序来说是比java快.
    平时我用spark时读取10G的txt数据文件, 大概是 35秒左右, 我看后台spark开了 3000个线程在读同一个文件. c++能做到不? 做不到.
    但是你这个比赛题目, 可能用c++写个简单的程序是比java快.谢谢大佬。我试了一下,还是跑不过...准备换cpp了,反正差不多
      

  6.   

    A+B问题的例子。import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.StreamTokenizer;public class Main {
        public static void main(String[] args) throws IOException {
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
            StreamTokenizer sc = new StreamTokenizer(bufferedReader);
            while (sc.nextToken() != StreamTokenizer.TT_EOF) {
                long a = (long) sc.nval;
                sc.nextToken();
                long b = (long) sc.nval;
                System.out.println(a + b);
            }
            bufferedReader.close();
        }
    }
      

  7.   

    谢谢大佬。我试了一下,还是跑不过...准备换cpp了,反正差不多大佬的留言我已经保存下来了,很多我还看不太懂,我会慢慢学的,谢谢大佬啦
      

  8.   

    谢谢大佬,我去翻翻api先...非常感谢您