Java Scanner
精华
小牛编辑
118浏览
2023-03-14
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<String>
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的方法
方法 | 描述 |
---|---|
void close() | 此方法关闭此扫描器。 |
Pattern delimiter() | 此方法返回当前扫描器使用相匹配的分隔符的模式。 |
String findInLine(Pattern pattern) | 此方法试图找到指定的模式在忽略分隔符的下一次出现。 |
String findInLine(String pattern) | 此方法试图找到从指定字符串构造的模式在未来发生,忽略分隔符。 |
String findWithinHorizon(Pattern pattern, int horizon) | 此方法试图找到指定模式的下一次出现。 |
String findWithinHorizon(String pattern, int horizon) | 此方法试图找到从指定字符串构造的模式在未来发生,在忽略分隔符。 |
boolean hasNext() | 如果此扫描器有另一个标记在其输入此方法返回true。 |
boolean hasNext(Pattern pattern) | 如果下一个完整标记与指定模式匹配,该方法返回true。 |
boolean hasNext(String pattern) | 如果下一个标记与从指定字符串构造的模式此方法返回true。 |
boolean hasNextBigDecimal() | 如果在此扫描器输入信息中的下一个标记可以通过使用nextBigDecimal()方法被解释为一个BigDecimal,该方法返回true。 |
boolean hasNextBigInteger() | 如果在此扫描器输入信息中的下一个标记可以使用nextBigInteger()方法被解释为一个BigInteger的默认基数,此方法返回true。 |
boolean hasNextBigInteger(int radix) | 如果在此扫描器输入信息中的下一个标记可以使用nextBigInteger()方法被解释为一个BigInteger指定基数此方法返回true。 |
boolean hasNextBoolean() |
如果在此扫描器输入信息中的下一个标记可以解释为使用从字符串“true|false”创造了一个不区分大小写模式的布尔值,此方法返回true。 |
boolean hasNextByte() | 如果在此扫描器输入信息中的下一个标记可以使用nextByte()方法被解释为一个字节值的默认基数此方法返回true。 |
boolean hasNextByte(int radix) | 如果在此扫描器输入信息中的下一个标记可以使用nextByte()方法被解释为一个字节值指定基数,此方法返回true。 |
boolean hasNextDouble() | 如果在此扫描器输入信息中的下一个标记可以解释为使用nextDouble()方法的一个double值,此方法返回true。 |
boolean hasNextFloat() | 此方法返回true,如果在此扫描器输入信息的下一个标记可以使用nextFloat()方法解释为浮点值。 |
boolean hasNextInt() | 如果在此扫描器输入信息中的下一个标记可以使用nextInt()方法被解释为一个int值的默认基数,此方法返回true。 |
boolean hasNextInt(int radix) | 如果在此扫描器输入信息中的下一个标记可以使用nextInt()方法被解释为一个int值指定基数,此方法返回true。 |
boolean hasNextLine() | 如果有另一行在此扫描器的输入,此方法返回true。 |
boolean hasNextLong() | 如果在此扫描器输入信息中的下一个标记可以使用nextLong()方法被解释为一个long值的默认基数,此方法返回true。 |
boolean hasNextLong(int radix) | 如果在此扫描器输入信息中的下一个标记可以使用nextLong()方法被解释为一个long值指定基数,此方法返回true。 |
boolean hasNextShort() | 如果在此扫描器输入信息中的下一个标记可以使用nextShort()方法被解释为一个short值的默认基数,此方法返回true。 |
boolean hasNextShort(int radix) | 如果在此扫描器输入信息中的下一个标记可以使用nextShort()方法被解释为一个short值指定基数,此方法返回true。 |
IOException ioException() | 此方法返回的最后一个IOException异常抛出此扫描器的基本可读。 |
Locale locale() | 此方法返回此扫描器的语言环境。 |
MatchResult match() | 此方法返回此扫描器所执行的最后扫描操作的匹配结果。 |
String next() | 此方法查找并返回来自此扫描器的下一个完整标记。 |
String next(Pattern pattern) | 此方法返回下一个标记,如果它与指定模式匹配。 |
String next(String pattern) | 此方法返回下一个标记,如果它匹配从指定字符串构造的模式。 |
BigDecimal nextBigDecimal() | 此方法扫描输入的下一个标记为一个BigDecimal。 |
BigInteger nextBigInteger() | 此方法扫描输入的下一个标记为一个BigInteger。 |
BigInteger nextBigInteger(int radix) | 此方法扫描输入的下一个标记为一个BigInteger。 |
boolean nextBoolean() | 此方法扫描输入的下一个标记成一个布尔值并返回该值。 |
byte nextByte() | 此方法扫描输入的下一个标记为一个字节。 |
byte nextByte(int radix) | 此方法扫描输入的下一个标记为一个字节。 |
double nextDouble() | 此方法扫描输入的下一个标记为double。 |
float nextFloat() | 此方法扫描输入的下一个标记为float。 |
int nextInt() | 此方法扫描输入的下一个标记为int。 |
int nextInt(int radix) | 此方法扫描输入的下一个标记为int。 |
String nextLine() | 此方法前进此扫描器执行当前行,并返回跳过的输入信息。 |
long nextLong() | 此方法扫描输入的下一个标记为一个long。 |
long nextLong(int radix) | 此方法扫描输入的下一个标记为一个long。 |
short nextShort() | 此方法扫描输入的下一个标记为一个long。 |
short nextShort(int radix) | 此方法扫描输入的下一个标记为short。 |
int radix() | 此方法返回此扫描器的默认基数。 |
void remove() | 不受此实现迭代器所支持的删除操作。 |
Scanner reset() | 此方法重置该扫描仪。 |
Scanner skip(Pattern pattern) | 此方法跳过输入相匹配的指定模式,在忽略分隔符。 |
Scanner skip(String pattern) | 此方法跳过输入匹配从指定字符串构造的模式。 |
String toString() | 此方法返回当前扫描器的字符串表示形式。 |
Scanner useDelimiter(Pattern pattern) | 此方法设置此扫描器的分隔模式,以指定的模式。 |
Scanner useDelimiter(String pattern) | 此方法设置此扫描器的分隔模式,以从指定字符串构造的模式。 |
Scanner useLocale(Locale locale) | 此方法设置此扫描器的语言环境,以指定的语言环境。 |
Scanner useRadix(int radix) | 此方法设置此扫描器的默认基数为指定基数。 |
6 Java Scanner的例子
让我们看一个简单的Java扫描仪示例,我们从用户那里获得单个输入。通过in.nextLine()方法请求一个字符串。
package cn.xnip;
/**
* 小牛知识库网: https://www.xnip.cn
*/
/**
* 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: xnip
Name is: xnip