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了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Scanner 文本文件读取与处理

利用 java.util.Scanner 这个工具,读取文本文件还是比较简单,只需要利用该类的一个构造方法 Scanner(File file),即可,需要传入一个文件对象,当然这就需要利用 java...
  • sunyanxiong123
  • sunyanxiong123
  • 2017年07月16日 22:37
  • 1751

Java Scanner类及其常用方法 和String常用方法

在ACM题中常需要从键盘获取数据,这里整理一下Scanner类的用法,解决这方面的问题。 1.scanner的构造方法: Scanner sc =new Scanner(System.in...
  • FZZFFFFF
  • FZZFFFFF
  • 2015年03月26日 14:25
  • 1701

Java Scanner用法详解

Scanner用法及Scanner报错:java.util.NoSuchElementException。
  • gongxifacai_believe
  • gongxifacai_believe
  • 2017年02月08日 21:47
  • 16199

Java中Scanner类的用法

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

java中Scanner类的接收方法

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

【java】 Scanner类读取txt文件研究

今天突然想到了一个问题:之前看到测试的同事用eclipse控制台输入短信验证码,进行系统流程测试的场景,其中就用到了java.util.Scanner类,从事开发这么长时间,使用这个类非常少,想起当初...
  • sinosoft12345
  • sinosoft12345
  • 2018年01月14日 22:19
  • 62

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

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

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

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

java中Scanner类nextLine()和next()的区别和使用方法

在实现字符窗口的输入时,扫描器Scanner非常实用,操作起来也比较简单。在今天编程的过程中,我发现用Scanner实现字符串的输入有两种方法,一种是next(),一种nextLine(),但是这两种...
  • Zhiyuan_Ma
  • Zhiyuan_Ma
  • 2016年06月06日 00:29
  • 27963

初识JAVA中的PrintWriter/Scanner,文本的读入和写出

java进阶之旅之文本的读入和写出。
  • u011924665
  • u011924665
  • 2015年12月22日 14:45
  • 337
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:about java Scanner
举报原因:
原因补充:

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