ACM中Java输入输出[通俗易懂]

ACM中Java输入输出[通俗易懂]最初写算法时,是用Scanner的。因为当时接触的测试数据基本都是以算法的复杂度为主,但是后面遇到大量的输入数据时。发现Scanner远远不能满足条件。下面列出几种常用的输入输出方式。(输出统一用printwriter,系统的system.out太慢,结尾要释放缓存才能输出,不然数据放在缓存中输不出来)1:Scanner这个类最慢,但是最好用,因为这个类没有缓存处理,所以io方面大量输入…

大家好,又见面了,我是你们的朋友全栈君。

最初写算法时,是用Scanner的。因为当时接触的测试数据基本都是以算法的复杂度为主,但是后面遇到大量的输入数据时。发现Scanner远远不能满足条件。下面列出几种常用的输入输出方式。(输出统一用printwriter,系统的system.out太慢,结尾要释放缓存才能输出,不然数据放在缓存中输不出来)
1:Scanner 这个类最慢,但是最好用,因为这个类没有缓存处理,所以io方面大量输入读取特别慢。

Scanner sc=new Scanner(System.in);
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out)); 

2:bufferedreader这个类最不方便,但是可以满足大部分输入速度的需求,输入缺点就是只能按行读取数据,必要时需要字符串分割,转成int以及其他类型还需要转换。

BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out)); 

这种输入方式只能输入字符串然后分割处理等等,效率比Scanner高很多
3:StreamTokenizer这个类最快,相对第二种也好用很多,他的底层是用字符分割用,但是这样处理有很大局限性。输入string类型除了纯字母。否则混合输入会出错,特殊符号在字符串中输入也不行。

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.nextToken();long p=(long)in.nval;
in.nextToken();double q=in.nval;
out.print(n);
out.flush();

这种输入方式效率最高,巨大的输入量也能快速处理。
下面附上同一个题*(百度之星2018资格赛1002三种输入的时间差距)
Scanner超时
这里写图片描述
bufferedreader
这里写图片描述
Streamtokenizer最快
这里写图片描述
其中bufferedreader最难用,Scanner最好用,但是streamtokenizer最快,刚开始可能用的不习惯,但是习惯就好了,毕竟这个影响太大了,至于输出。系统输出太慢。大量数据还会超时。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144966.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SpringBoot test

    SpringBoot test原文地址:https://www.jianshu.com/p/72b19e24a602前言mac上idea快捷键,command+shift+T根据类生成快捷键。对spring容器中的类做单元测试在src/main下建立UserService类,对其进行单于测试,生产其单元测试类(使用command+shift+T快捷键),生成的test类在src/test下@Servi…

    2022年4月28日
    49
  • wptx64能卸载吗_Win10如何卸载应用?Win10内置应用卸载方法

    wptx64能卸载吗_Win10如何卸载应用?Win10内置应用卸载方法Win10如何卸载应用?Win10默认预装集成了很多应用,这是大多数用户都了解的共识,从个人角度上来看,其他还是很好看的,如果真的需要使用以下Win10内置应用卸载方法来处理,可能会让你失望的,毕竟TA们占用的资源并不多。Win10内置应用卸载方法:一、手动卸载法(针对可卸载的):1、卸载Win10应用最简单的方式就是在“开始”菜单上找到这些内置应用的动态磁铁,然后鼠标右击直接点击卸载即可。当…

    2022年5月2日
    393
  • C#获取url中参数键值对的方法建议收藏

    方法如下://////遍历Url中的参数列表//////如:(?userName=keleyi&userType=1)publicstringGetUrlParam(){stri

    2021年12月20日
    43
  • 使用 Python 爬取网页数据

    使用 Python 爬取网页数据在需要过去一些网页上的信息的时候 使用 Python 写爬虫来爬取十分方便 1 使用 urllib request 获取网页 urllib 是 Python 內建的 HTTP 库 使用 urllib 可以只需要很简单的步骤就能高效采集数据 配合 Beautiful 等 HTML 解析库 可以编写出用于采集网络数据的大型爬虫 注 示例代码使用 Python3 编写 urllib 是 Python2 中 urllib 和 urllib2 两个库合并而来 Python2 中的 urllib2 对应

    2025年8月11日
    3
  • php好用的中文转拼音的类库

    php好用的中文转拼音的类库中文转拼音的类库<?phpnamespacejplt;usethink\Db;usethink\Config;usethink\Session;usethink\Request;/**jplt\Pinyin*CreatedbyPhpStorm.*User:jifei*Date:15/6/25*Time:下午2:26*/classPinyin{//中文字符串privatestatic$string=’

    2022年6月21日
    34
  • 安防摄像头已分别接入乐橙云、萤石云,如何实现私有云平台的统一管理与向上级联?

    安防摄像头已分别接入乐橙云、萤石云,如何实现私有云平台的统一管理与向上级联?一、背景分析科技创新对社会发展的重要性不言而喻。对于安防行业来说,人工智能和5G等新技术的应用,已经成为推动智能安防发展的一块关键踏板。从技术维度来看,人工智能、云计算、大数据、物联网等技术在安防视频监控领域产生了较多的交汇与融合。新技术打破了传统安防产业以硬件为主的局面,带来了软件定义的摄像机、云平台等概念。芯片技术不断进步,AI算力成本有所降低;深度学习算法及相关框架、开源软件的成熟使得AI算法普惠化;GB/T28181、ONVIF等行业标准的成熟,降低了视频图像数据互联互通的难度;H.265/

    2022年6月9日
    86

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号