Java Scanner
1 什么是Java Scanner
Java的Scanner类存放在java.util包下。Java提供了多种从键盘读取输入的方法,java.util.Scanner类就是其中之一。
Java Scanner类使用默认为空格的定界符将输入分为令牌。它提供了许多读取和解析各种原始值的方法。
Java Scanner类广泛用于使用正则表达式解析文本以获取字符串和原始类型。这是在Java中获取输入的最简单方法。借助Java中的Scanner,我们可以从用户那里获取基本类型的输入,例如int,long,double,byte,float,short等。
Java Scanner类继承Object类,并实现了Iterator和Closeable接口。
Java Scanner类提供nextXXX() 方法以返回值的类型,例如nextInt(),nextByte(),nextShort(),next(),nextLine(),nextDouble(),nextFloat(),nextBoolean()等。要从Scanner获取单个字符,可以调用next()。charAt(0)方法,该方法返回单个字符。
2 Java Scanner的语法
public final class Scanner
extends Object
implements Iterator
3 如何获取Scanner对象
要获取从用户读取输入的Java Scanner实例,我们需要在Scanner类的构造函数中传递输入流(System.in)。例如:
Scanner in = new Scanner(System.in);
要获取解析字符串的Java Scanner实例,我们需要在Scanner类的构造函数中传递字符串。例如:
Scanner in = new Scanner("Hello Yiidian");
4 Java Scanner的构造方法
构造方法
描述
Scanner(File source)
构造一个新的Scanner,该Scanner生成从指定文件扫描的值。
Scanner(File source, String charsetName)
构造一个新的Scanner,该Scanner生成从指定文件扫描的值。
Scanner(InputStream source)
构造一个新的Scanner,该Scanner生成从指定输入流中扫描的值。
Scanner(InputStream source, String charsetName)
构造一个新的Scanner,该Scanner生成从指定输入流中扫描的值。
Scanner(Readable source)
构造一个新的Scanner,该Scanner生成从指定来源扫描的值。
Scanner(String source)
构造一个新的Scanner,该Scanner生成从指定字符串扫描的值。
Scanner(ReadableByteChannel source)
构造一个新的Scanner,该Scanner生成从指定通道扫描的值。
Scanner(ReadableByteChannel source, String charsetName)
构造一个新的Scanner,该Scanner生成从指定通道扫描的值。
Scanner(Path source)
构造一个新的扫描仪,该Scanner生成从指定文件扫描的值。
Scanner(Path source, String charsetName)
构造一个新的扫描仪,该Scanner生成从指定文件扫描的值。
5 Java Scanner的方法
方法
描述
此方法返回当前扫描器使用相匹配的分隔符的模式。
如果此扫描器有另一个标记在其输入此方法返回true。
如果在此扫描器输入信息中的下一个标记可以通过使用nextBigDecimal()方法被解释为一个BigDecimal,该方法返回true。
如果在此扫描器输入信息中的下一个标记可以使用nextBigInteger()方法被解释为一个BigInteger的默认基数,此方法返回true。
如果在此扫描器输入信息中的下一个标记可以使用nextBigInteger()方法被解释为一个BigInteger指定基数此方法返回true。
如果在此扫描器输入信息中的下一个标记可以解释为使用从字符串“true|false”创造了一个不区分大小写模式的布尔值,此方法返回true。
如果在此扫描器输入信息中的下一个标记可以使用nextByte()方法被解释为一个字节值的默认基数此方法返回true。
如果在此扫描器输入信息中的下一个标记可以使用nextByte()方法被解释为一个字节值指定基数,此方法返回true。
如果在此扫描器输入信息中的下一个标记可以解释为使用nextDouble()方法的一个double值,此方法返回true。
此方法返回true,如果在此扫描器输入信息的下一个标记可以使用nextFloat()方法解释为浮点值。
如果在此扫描器输入信息中的下一个标记可以使用nextInt()方法被解释为一个int值的默认基数,此方法返回true。
如果在此扫描器输入信息中的下一个标记可以使用nextInt()方法被解释为一个int值指定基数,此方法返回true。
如果有另一行在此扫描器的输入,此方法返回true。
如果在此扫描器输入信息中的下一个标记可以使用nextLong()方法被解释为一个long值的默认基数,此方法返回true。
如果在此扫描器输入信息中的下一个标记可以使用nextLong()方法被解释为一个long值指定基数,此方法返回true。
如果在此扫描器输入信息中的下一个标记可以使用nextShort()方法被解释为一个short值的默认基数,此方法返回true。
如果在此扫描器输入信息中的下一个标记可以使用nextShort()方法被解释为一个short值指定基数,此方法返回true。
此方法返回的最后一个IOException异常抛出此扫描器的基本可读。
此方法返回此扫描器的语言环境。
此方法返回此扫描器所执行的最后扫描操作的匹配结果。
此方法查找并返回来自此扫描器的下一个完整标记。
此方法返回下一个标记,如果它匹配从指定字符串构造的模式。
此方法扫描输入的下一个标记为一个BigDecimal。
此方法扫描输入的下一个标记为一个BigInteger。
此方法扫描输入的下一个标记成一个布尔值并返回该值。
此方法扫描输入的下一个标记为一个字节。
此方法扫描输入的下一个标记为double。
此方法扫描输入的下一个标记为float。
此方法扫描输入的下一个标记为int。
此方法前进此扫描器执行当前行,并返回跳过的输入信息。
此方法扫描输入的下一个标记为一个long。
此方法扫描输入的下一个标记为一个long。
此方法返回此扫描器的默认基数。
不受此实现迭代器所支持的删除操作。
此方法返回当前扫描器的字符串表示形式。
6 Java Scanner的例子
让我们看一个简单的Java扫描仪示例,我们从用户那里获得单个输入。通过in.nextLine()方法请求一个字符串。
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* Java Scanner的例子
*/
import java.util.*;
public class Demo {
public static void main(String args[]){
Scanner in = new Scanner(System.in);
System.out.print("Enter your name: ");
String name = in.nextLine();
System.out.println("Name is: " + name);
in.close();
}
}
输出结果为:
Enter your name: yiidian
Name is: yiidian