使用Scanner所遇到的问题
来源:互联网 发布:wampserver for mac 编辑:程序博客网 时间:2024/06/07 14:35
Scanner来自 java.util.Scanner 中。
对于我这种菜鸟来说,Scanner主要是用来进行控制台输入。在学习I/O后,了解到BufferedReader也可以进行控制台输入,但是习惯改不过来了,只能继续用Scanner啦!
题外话:使用 BufferedReader 获得控制台输入:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
问题1:.nextXxx() 与 .nextLine()
比如这样一个场景:首先输入一个数字代表接下来需要输入的行数,然后输入数据:
2Emilia 16ram 17
写法:
Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); //scanner.nextLine(); String[] name = new String[num]; int age = new int[num]; int i = 0; while(scanner.hasNext()){ String[] str = scanner.nextLine().split(" "); name[i] = str[0].charAt(0); age[i] = Integer.parseInt(str[1]);//2 i++; if(i == num){ break; } }
如果没有被注释掉的代码,那么 scanner 中的指针就不会指到下一行,会导致下面的str[0]项变为空。
因在 nextXxx() 后紧跟 nextLine() ,会使这个 nextLine() 不会获得任何内容,从而导致2处发生错误。
问题2:Sacnner 与 BufferedReader
java.util.Scanner类是一个简单的文本扫描类,它可以解析基本数据类型和字符串。它本质上是使用正则表达式去读取不同的数据类型。
Java.io.BufferedReader类为了能够高效的读取字符序列,从字符输入流和字符缓冲区读取文本。
相对来说,BufferedReader比Scanner快一点,并且支持并发,Scanner不支持。但是scanner在处理输入数字、单个字符、布尔变量时会比前者快一点。
两者的区别:
- BufferedReader是支持同步的,而Scanner不支持。如果我们处理多线程程序,BufferedReader应当使用。
- BufferedReader相对于Scanner有足够大的缓冲区内存。
- Scanner有很少的缓冲区(1KB字符缓冲)相对于BufferedReader(8KB字节缓冲),但是这是绰绰有余的。
- BufferedReader相对于Scanner来说要快一点,因为Scanner对输入数据进行类解析,而BufferedReader只是简单地读取字符序列。
阅读全文
0 0
- 使用Scanner所遇到的问题
- 最近使用j2me所遇到的问题~
- 使用nagios所遇到的问题简记
- Octave使用所遇到的问题
- android studio 使用所遇到的问题
- 使用Android studio所遇到的问题
- 使用sqlite3所遇到的问题
- Scanner对象的使用问题
- java使用scanner接受用户输入遇到空格问题的解决
- 使用Facebook提供的Fresco所遇到的问题
- 今天使用模板特化所遇到的问题
- 使用Hibernate过程中所遇到的问题已经解决方法
- 使用SmartUpload 上传图片时所遇到的问题
- svn远程同步使用特殊办法所遇到的问题
- Android使用Ant打包所遇到问题的解决方法
- liferay过程中使用ajax所遇到的问题
- 关于VisualSVN安装以及使用时所遇到的问题
- 第一次使用Android Studio所遇到的问题
- offer46--实现加法
- Java 练习题2
- LeetCode:83.Remove Duplicates from Sorted List
- C++ primer:第三章备忘。
- [生活悟]2017.9.26低进高出
- 使用Scanner所遇到的问题
- Akka核心部件
- PowerEdge R430 机架式服务器安装( Ubuntu server 14.04.1 、PHP5.5.9、PHP-redis2.8、Phalcon3.1) 未解决问题:换成静态路由的话,怎么就
- Qt编程入门3 网络
- svn版本冲突解决
- C语言字符串
- loadrunner Web_类函数之web_set_proxy_bypass()
- Codeforces Round #436 (Div. 2)
- fiddler