赞
踩
大家都知道,在ACM竞赛中,对程序运行时间有非常严格的要求,所以大部分人喜欢用C/C++,因为C/C++比JAVA快,JAVA容易超时。然而JAVA语言本身也有很多C/C++所没有的优势,为了让我们可爱的JAVA不因为运行时间而被ACMers吐槽,也为了让JAVA在ACM竞赛中发挥它更大的价值,故总结出JAVA高速IO输入输出,下面模板已经过多次测试,各大在线测评网站都支持使用。java的Scanner 比较慢(出了名的了),如果需要输入
105 数量级的数据并输出同样数量级的数据,使用Scanner和System.out耗时将很可能超过1s。
- StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
- PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
判断文件结尾:
相当于Java的 while(scanner.hasNext()),或者C的 while(scanf("%d",&n)!=EOF),在 StreamTokenizer 类中判断文件结尾使用 while (in.nextToken() != StreamTokenizer.TT_EOF) ,StreamTokenizer.TT_EOF这个是个参数,就是相当于EOF了。
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
- /**
- * 为了从流中获取标记,可以调用StreamTokenizer的nextToken()方法。
- * 调用nextToken()方法以后
- * 如果标记是字符串,可用 String s=st.sval
- * 如果是整数用 int n=(int) st.nval
- * 如果是浮点数用 int n=st.nval //st.navl默认解析出的格式是double
- * StreamTokenizer.TT_EOF这是个参数,就是指文件尾,EOF
- */
-
- /* 下面这是IO流包装,可以看不懂,直接套用就好*/
- StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
- PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
-
- in.nextToken();//第一个次读取前记得调用 in.nextToken()读下一个标记 nextToken()方法相当于让光标指向下一个位置,记得写
- int a = (int) in.nval;/*获取整数*/
- out.print(a);
- out.flush();//这里如果不刷新,不会输出结果 刷新缓冲区,否则a会留在缓冲区
-
- in.nextToken();
- double b = in.nval;//st.navl默认解析出的格式是double
- out.print(b);
- out.flush();
-
- in.nextToken();
- String str = in.sval; /*注意:sval是获取不带空格的字符串,含有空格的字符串貌似无法读取。*/
- out.print(str);/*输出语句*/
- out.flush();/*刷新输出缓冲区*/

- // 用于输入的对象
- StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
- // 用于输出的对象
- PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
- // 必须先调用这个把下一个数据拉进来
- in.nextToken();
- int n = (int) in.nval; // 然后调用in.nval即可得到拉进来的数据
- //如果不知道还有没有下一个数据,可以这么写
- while (in.nextToken() != StreamTokenizer.TT_EOF) {
- // 然后在这里重复上述的输入过程,并干一些别的事情
- }
- //输出
- out.println(n);
- out.printf("%d ", n);
- //不管用上述的哪一种输出,最后记得flush
- out.flush();

参考:https://www.cnblogs.com/likailiche/p/4462062.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。