提问人:Adarsh Dhakad 提问时间:4/24/2021 最后编辑:Adarsh Dhakad 更新时间:6/4/2021 访问量:182
为什么与 BufferedReader 相比,scanner 类需要很长时间 [已关闭]
why scanner class take long time as compare to BufferedReader [closed]
问:
在java编程中,有三个类(StringTokenizer、Scanner、BufferedReader)来获取输入。为什么 Scanner 与 bufferereader 和 DataInputStream 相比需要很长时间。
扫描器
Scanner s = new Scanner(System.in);
int n = s.nextInt();
为什么 BufferedReader 速度很快
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
StringTokenizer st
= new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
答:
2赞
2 revsHovercraft Full Of Eels
#1
您的扫描仪从输入流中读取较小的信息位,一次读取一个,没有缓冲,并且此过程很慢,因为该过程中最慢的步骤(从输入流读取)必须多次完成。
使用 Buffered input 的全部意义在于,通过减少从文件和缓冲区中读取大量数据的次数,然后根据需要从代码中的缓冲区中提取数据,从而实现更省时的读取。这样,从输入流读取的瓶颈就大大减少了。
你试过吗:
Scanner scan = new Scanner(new BufferedInputStream(System.in));
如果是这样,结果是什么?
评论
0赞
Adarsh Dhakad
4/24/2021
扫描程序扫描 = new Scanner(new BufferedInputStream(System.in));这也给了我运行时错误
1赞
Hovercraft Full Of Eels
4/30/2021
@Andrew是的,但不幸的是,我现在不能,因为我在手机上
0赞
Andrew Thompson
5/1/2021
NVM - 问题已重新打开,我的答案已添加。:)
评论