about java Scanner

原创 2015年07月06日 18:50:37

</pre>java.util.Scanner类算是一个不常用的类,其本身提供的方法也不算多,下面就简单介绍下Scanner类。<p></p><p></p><pre name="code" class="java">Scanner sca = new Scanner(System.in);
利用此构造方面可以键盘获取输入,当得到Scanner对象时,调用其hasNext、next、hasNextLine、nextLine等含有next的方法都会造成一个阻塞以便等待键盘输入。

while(sca.hasNext()){
<span style="white-space: pre;">	</span>dosomething<span style="font-family: Arial, Helvetica, sans-serif;">;</span>
}
上面的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中Scanner类的用法

  • 2011年09月09日 01:44
  • 3KB
  • 下载

java中Scanner类的接收方法

  • 2013年06月24日 11:01
  • 15KB
  • 下载

Java scanner录入数字与字符

import java.util.Scanner;public class Test { public static void main(String[] args) { // ...

Java输入流之BufferReader和Scanner的用法!

在Java中,我们都知道Java的标准输入串是System.in。但是我们却很少在Java中看到谁使用它,这是因为我们平时输入的都是一个字符串或者是一个数字等等。而System.in提供的read方法...

Java中怎么获取键盘输入-Scanner

使用scanner类可以很方便的获取用户的键盘输入,Scannery是一个基于正则表达式的文本扫描器,他可以从文件、输入流、字符串中解析出来基本类型值和字符串值。 scanner主要提供两个...

学习笔记(4)~java中Scanner的用法

import java.util.Scanner; public class TextScanner{ public static void main(String [] args){ ...

博为峰Java技术题 ——JavaSE Scanner类Ⅰ

[Scanner 类] 博为峰小博老师: java.util.Scanner是Java5的新特征,我们可以通过 Scanner 类来获取用户的输入。 下面是创建 Scanner 对象的基本语法:...
  • bwf_erg
  • bwf_erg
  • 2017年03月13日 17:56
  • 44

Java中的Scanner类

转载自: http://bbs.itheima.com/thread-90856-1-1.html http://blog.sina.com.cn/s/blog_7014ad5c01018sov.h...

Java中Scanner的nextInt(),next(),nextLine()方法总结

前言:借别人的例子做个总结。 原文出处:http://www.cnblogs.com/gold-worker/archive/2013/04/10/3013063.html 代码一 packag...

介绍Scanner、Random类

介绍Scanner、Random类
  • Cleann
  • Cleann
  • 2017年04月19日 22:26
  • 224
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:about java Scanner
举报原因:
原因补充:

(最多只允许输入30个字)