about java Scanner
2015-07-06 18:50
519 查看
java.util.Scanner类算是一个不常用的类,其本身提供的方法也不算多,下面就简单介绍下Scanner类。
Scanner scan = new Scanner(System.in);利用此构造方面可以键盘获取输入,当得到Scanner对象时,调用其hasNext、next、hasNextLine、nextLine等含有next的方法都会造成一个阻塞以便等待键盘输入。
while(scan.hasNext()){
dosomething
}上面的while循环将会一直造成阻塞等待用户输入,一旦Scanner对象创建(没有close,close后调用hasNext抛异常)其hasNext总是会为true等待用户输入。
我们在处理完自己的逻辑业务后,可以break出while循环不再受阻塞。友情提示跳出后记得将Scanner对象close.close后将不能再调用其他方法。
注意:boolean hasNextLine():返回输入源中是否还有下一行。这种说法不对,这个真心是等待输入。有了输入他才会返回true。
next()和nextLine()区别:
不想描述太多,直接看结果……public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
String next = sca.next();
Scanner scaLine = new Scanner(System.in);
String nextLine = scaLine.nextLine();
System.out.println("scanner next:"+next);
System.out.println("scanner nextLine:"+nextLine);
sca.close();
scaLine.close();
}输入:
are you ok?
are you ok?
输出:
scanner next:are
scanner nextLine:are you ok?
总结
由此可见next()方法和nextLine()方法区别是:next()方法在遇到空格、Tab或Enter键时将会终止;
而nextLine()只有遇到Enter键才会终止。
另外当先调用next后,再调用nextLine或next将不会再造成阻塞等待输入,而是将此行中t剩下的数据得到。
但是先调用nextLine后,在调用next依旧会造成阻塞等待输入。
自定义分割符:
next默认的分割符为空格、Tab、Enter;nextLine默认的分割符为Enter;
我们可以利用Scanner对象的useDelimiter方法来自定义分隔符。
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
sca.useDelimiter("\n");
System.out.println(sca.next());
sca.close();
}输入:are you ok?
输出:are you ok?
此时next的分隔符也变成了Enter而不是空格和Tab了。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统