Java教程

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类并实现迭代器和Closeable接口。
Java Scanner类提供nextXXX()方法以返回值的类型,例如nextInt(),nextByte(),nextShort(),next(),nextLine(),nextDouble(),nextFloat(),nextBoolean()等。要从扫描仪获取单个字符,可以调用next()。charAt(0)方法,该方法返回单个字符。

Java扫描程序类声明

public final class Scanner extends Object implements Iterator<String>

如何获取Java Scanner

要获取从用户读取输入的Java Scanner实例,我们需要在构造函数中传递输入流(System.in)扫描程序类。例如:
Scanner in = new Scanner(System.in);
要获取解析字符串的Java Scanner实例,我们需要在Scanner类的构造函数中传递字符串。例如:
Scanner in = new Scanner("Hello lidihuo");

Java扫描程序类构造器

构造函数 说明
Scanner(File source) 它构造了一个新的扫描仪,该扫描仪生成从指定文件扫描的值。
Scanner(File source, String charsetName) 它构造了一个新的扫描仪,该扫描仪生成从指定文件扫描的值。
Scanner(InputStream source) 它构造了一个新的扫描仪,该扫描仪生成从指定输入流中扫描的值。
Scanner(InputStream source, String charsetName) 它构造了一个新的扫描仪,该扫描仪生成从指定输入流中扫描的值。
Scanner(Readable source) 它构造了一个新的扫描仪,该扫描仪生成从指定来源扫描的值。
Scanner(String source) 它构造了一个新的扫描仪,该扫描仪生成从指定字符串扫描的值。
Scanner(ReadableByteChannel source) 它构造了一个新的扫描仪,该扫描仪产生从指定通道扫描的值。
Scanner(ReadableByteChannel source, String charsetName) 它构造了一个新的扫描仪,该扫描仪生成从指定通道扫描的值。
Scanner(Path source) 它构造了一个新的扫描仪,该扫描仪生成从指定文件扫描的值。
Scanner(Path source, String charsetName) 它构造了一个新的扫描仪,该扫描仪生成从指定文件扫描的值。

Java扫描仪类方法

以下是扫描仪方法的列表:
修饰符和类型 方法 说明
void close() 它用于关闭该扫描仪。
pattern delimiter() 用于获取Scanner类当前用于匹配定界符的Pattern。
Stream <MatchResult> findAll() 它用于查找与提供的模式字符串匹配的匹配结果流。
String findInLine() 它用于查找由指定字符串构造的模式的下一次出现,而忽略定界符。
string findWithinHorizo​​n() 它用于查找下一个根据指定字符串构造的模式而忽略分隔符的情况。
boolean hasNext() 如果该扫描仪的输入中包含另一个令牌,则返回true。
boolean hasNextBigDecimal() 它用于检查是否可以使用nextBigDecimal()方法将此扫描程序输入中的下一个标记解释为BigDecimal。
boolean hasNextBigInteger() 它用于检查是否可以使用nextBigDecimal()方法将此扫描程序输入中的下一个标记解释为BigDecimal。
boolean hasNextBoolean() 它用于检查是否可以使用nextBoolean()方法将此扫描程序输入中的下一个标记解释为布尔值。
boolean hasNextByte() 它用于检查是否可以使用nextBigDecimal()方法将此扫描程序输入中的下一个标记解释为字节。
boolean hasNextDouble() 它用于检查是否可以使用nextByte()方法将此扫描程序输入中的下一个标记解释为BigDecimal。
boolean hasNextFloat() 用于检查是否可以使用nextFloat()方法将此扫描程序输入中的下一个标记解释为Float。
boolean hasNextInt() 它用于检查此扫描程序输入中的下一个标记是否可以使用nextInt()方法解释为int。
boolean hasNextLine() 它用于检查此扫描仪输入中是否还有另一行。
boolean hasNextLong() 它用于检查使用nextLong()方法是否可以将此扫描仪输入中的下一个标记解释为Long。
boolean hasNextShort() 它用于检查使用nextShort()方法是否可以将此扫描仪输入中的下一个标记解释为Short。
IOException ioException() 它用于获取此扫描程序的可读性最后抛出的IOException。
Locale locale() 它用于获取Scanner类的语言环境。
MatchResult match() 它用于获取此扫描仪上次扫描操作的匹配结果。
String next() 它用于从正在使用的扫描仪中获取下一个完整令牌。
BigDecimal nextBigDecimal() 它将输入的下一个令牌扫描为BigDecimal。
BigInteger nextBigInteger() 它将输入的下一个标记扫描为BigInteger。
boolean nextBoolean() 它将输入的下一个标记扫描为布尔值并返回该值。
byte nextByte() 它扫描输入的下一个令牌作为字节。
double nextDouble() 它将输入的下一个标记扫描为双精度。
float nextFloat() 它以浮点数扫描输入的下一个标记。
int nextInt() 它将输入的下一个标记扫描为Int。
String nextLine() 它用于获取Scanner对象跳过的输入字符串。
long nextLong() 它将扫描输入的下一个令牌很长时间。
short nextShort() 它扫描输入的下一个令牌作为short。
int radix() 它用于获取扫描仪使用的默认基数。
void remove() 当此Iterator实现不支持删除操作时使用。
Scanner reset() 它用于重置正在使用的扫描仪。
Scanner skip() 它将跳过与指定模式匹配的输入,而忽略定界符
Stream<String> tokens() 它用于从正在使用的Scanner对象中获取由定界符分隔的标记流。
String toString() 它用于使用来获取Scanner的字符串表示形式。
Scanner useDelimiter() 用于将正在使用的扫描仪的定界图案设置为指定的图案。
Scanner useLocale() 用于将扫描仪的语言环境对象设置为指定的语言环境。
Scanner useRadix() 用于将正在使用的扫描仪的默认基数设置为指定基数。

示例1

让我们看一个简单的Java扫描仪示例,我们从用户那里获得单个输入。在这里,我们通过in.nextLine()方法请求一个字符串。
import java.util.*;
public class ScannerExample {
    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: sonoo jaiswal
Name is: sonoo jaiswal

示例2

import java.util.*;
public class ScannerClassExample1 {
    public static void main(String args[]){
        String s = "Hello, this is lidihuo.";
        Scanner scan = new Scanner(s);
        System.out.println("Boolean Result: " + scan.hasNext());
        System.out.println("String: " +scan.nextLine());
        scan.close();
        System.out.println("--------Enter Your Details-------- ");
        Scanner in = new Scanner(System.in);
        System.out.print("Enter your name: ");
        String name = in.next();
        System.out.println("Name: " + name);
        System.out.print("Enter your age: ");
        int i = in.nextInt();
        System.out.println("Age: " + i);
        System.out.print("Enter your salary: ");
        double d = in.nextDouble();
        System.out.println("Salary: " + d);
        in.close();
    }
}
输出:
Boolean Result: true
String: Hello, This is lidihuo.
-------Enter Your Details---------
Enter your name: Abhishek
Name: Abhishek
Enter your age: 23
Age: 23
Enter your salary: 25000
Salary: 25000.0

示例3

import java.util.*;
public class ScannerClassExample2 {
    public static void main(String args[]){
        String str = "Hello/this is lidihuo/My name is Abhishek.";
        Scanner scanner = new Scanner(str);
        System.out.println("Boolean Result: "+scanner.hasNextBoolean());
        scanner.useDelimiter("/");
        System.out.println("---Tokenizes String---");
        while(scanner.hasNext()){
            System.out.println(scanner.next());
        }
        System.out.println("Delimiter used: " +scanner.delimiter());
        scanner.close();
    }
}
输出:
Boolean Result: false
---Tokenizes String---
Hello
This is lidihuo
My name is Abhishek.
Delimiter used: /
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4