Java教程-Java Scanner类

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()等。要从扫描器中获取单个字符,可以调用next().charAt(0)方法,它返回一个单个字符。
Java Scanner类的声明如下
public final class Scanner
extends Object
implements Iterator<String>
如何获取Java Scanner
要获取从用户那里读取输入的Java Scanner实例,我们需要在Scanner类的构造函数中传递输入流(System.in)。例如:
Scanner in = new Scanner(System.in);
要获取解析字符串的Java Scanner实例,我们需要在Scanner类的构造函数中传递字符串。例如:
Scanner in = new Scanner("Hello Javatpoint");
Java Scanner类的构造函数如下:
序号 | 构造函数 | 描述 |
---|---|---|
1 | Scanner(File source) | 构造一个从指定文件读取值的新Scanner。 |
2 | Scanner(File source, String charsetName) | 构造一个从指定文件读取值的新Scanner。 |
3 | Scanner(InputStream source) | 构造一个从指定输入流读取值的新Scanner。 |
4 | Scanner(InputStream source, String charsetName) | 构造一个从指定输入流读取值的新Scanner。 |
5 | Scanner(Readable source) | 构造一个从指定源读取值的新Scanner。 |
6 | Scanner(String source) | 构造一个从指定字符串读取值的新Scanner。 |
7 | Scanner(ReadableByteChannel source) | 构造一个从指定通道读取值的新Scanner。 |
8 | Scanner(ReadableByteChannel source, String charsetName) | 构造一个从指定通道读取值的新Scanner。 |
9 | Scanner(Path source) | 构造一个从指定文件读取值的新Scanner。 |
10 | Scanner(Path source, String charsetName) | 构造一个从指定文件读取值的新Scanner。 |
示例1
让我们看一个简单的Java Scanner示例,我们从用户那里获取单个输入。在这里,我们通过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 JavaTpoint.";
//Create scanner Object and pass string in it
Scanner scan = new Scanner(s);
//Check if the scanner has a token
System.out.println("Boolean Result: " + scan.hasNext());
//Print the string
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 JavaTpoint.
-------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 JavaTpoint/My name is Abhishek.";
//Create scanner with the specified String Object
Scanner scanner = new Scanner(str);
System.out.println("Boolean Result: "+scanner.hasNextBoolean());
//Change the delimiter of this scanner
scanner.useDelimiter("/");
//Printing the tokenized Strings
System.out.println("---Tokenizes String---");
while(scanner.hasNext()){
System.out.println(scanner.next());
}
//Display the new delimiter
System.out.println("Delimiter used: " +scanner.delimiter());
scanner.close();
}
}
输出:
Boolean Result: false
---Tokenizes String---
Hello
This is JavaTpoint
My name is Abhishek.
Delimiter used: /