Scanner类
Scanner
类属于java.util
包,用于解析基本类型和字符串类型的输入。它可以从控制台、文件、字符串等不同的数据源读取数据,并将其解析为适当的类型。
1 读取基本类型
- 读取整数
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
- 读取浮点数
Scanner sc = new Scanner(System.in);
double number = sc.nextDouble();
- 读取布尔值
Scanner sc = new Scanner(System.in);
boolean bool = sc.nextBoolean();
- 读取字符串
Scanner sc = new Scanner(System.in);
String string1 = sc.next();
String string1 = sc.nextLine();
//nextLine和next的区别:nextLine可以接收空格,所以两者一般不在一起出现.
- 读取byte型
Scanner sc = new Scanner(System.in);
byte byte1 = sc.nextByte();
- 其余略
2 判断输入是否有下一个元素
Scanner类提供了多种方法来检查输入中是否有下一个元素:
a. hasNext():检查是否有下一个字符串
b. hasNextInt():检查是否有下一个整数
c. hasNextDouble():检查是否有下一个浮点数
Scanner scanner = new Scanner(System.in);
String data1 = scanner.next();
System.out.println(data1);
while (scanner.hasNext()) {
String token = scanner.next();
if (token.equals("end")) {
break; // 当遇到 "end" 时结束循环
}
System.out.println(token);
}
3. 从文件读取数据
Scanner
类可以方便地从文件中读取数据。需要注意的是,在使用Scanner
类读取文件时,需要处理可能的FileNotFoundException
异常。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class FileReadExample {
public static void main(String[] args) {
try {
File file = new File("input.txt");
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
}
scanner.close();
} catch (FileNotFoundException e) {
System.out.println("File not found.");
e.printStackTrace();
}
}
}
4. 使用正则表达式分割输入
Scanner
类可以使用正则表达式来分割输入数据。例如,可以使用空格、逗号或其他符号作为分隔符。
import java.util.Scanner;
public class RegexExample {
public static void main(String[] args) {
String input = "green pink black white";
Scanner scanner = new Scanner(input);
scanner.useDelimiter(" ");
while (scanner.hasNext()) {
String fruit = scanner.next();
System.out.println(fruit);
}
scanner.close();
}
}
5. 设置输入的分隔符和编码
Scanner scanner = new Scanner(file, "UTF-8");
scanner.useDelimiter(","); // 使用逗号作为分隔符