掌握 Java Scanner:读取文本、数字与复杂类型的综合指南
掌握 Java Scanner
Scanner 类位于 java.util,可从流、文件、字符串和控制台捕获输入。下面演示核心用法模式。
示例 1:读取整行文本
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter your name: ");
String name = input.nextLine();
System.out.println("My name is " + name);
input.close();
}
}
输出
Enter your name: Kelvin My name is Kelvin
Scanner input = new Scanner(System.in); 构造监听键盘输入的 Scanner。nextLine() 消费整行直到换行符。
导入 Scanner 类
使用前导入:
import java.util.Scanner;
包导入详见 Java Packages。
创建 Scanner 对象
根据输入源实例化:
// 从输入流(如 System.in)
Scanner sc1 = new Scanner(InputStream input);
// 从文件
Scanner sc2 = new Scanner(File file);
// 从字符串
Scanner sc3 = new Scanner(String str);
Scanner 关键输入方法
Scanner 提供多种方法读取不同数据类型,速查表:
| 方法 | 描述 |
|---|---|
nextInt() | 读 int |
nextFloat() | 读 float |
nextBoolean() | 读 boolean |
nextLine() | 读整行文本 |
next() | 读单词(至空白符) |
nextByte() | 读 byte |
nextDouble() | 读 double |
nextShort() | 读 short |
nextLong() | 读 long |
示例 2:使用 nextInt()
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter an integer: ");
int data1 = input.nextInt();
System.out.println("Using nextInt(): " + data1);
input.close();
}
}
输出
Enter an integer: 22 Using nextInt(): 22
示例 3:使用 nextDouble()
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter Double value: ");
double value = input.nextDouble();
System.out.println("Using nextDouble(): " + value);
input.close();
}
}
输出
Enter Double value: 33.33 Using nextDouble(): 33.33
示例 4:使用 next()
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter your name: ");
String value = input.next();
System.out.println("Using next(): " + value);
input.close();
}
}
输出
Enter your name: Jonny Walker Using next(): Jonny
next() 在首个空白符停止,仅捕获名。
示例 5:使用 nextLine()
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter your name: ");
String value = input.nextLine();
System.out.println("Using nextLine(): " + value);
input.close();
}
}
输出
Enter your name: Jonny Walker Using nextLine(): Jonny Walker
与 next() 不同,nextLine() 捕获整行含空格,直到换行符。
推荐阅读: Java Scanner 跳过 nextLine() 问题
Scanner 处理 BigInteger 和 BigDecimal
高精度数字支持:
- nextBigInteger() – 读
BigInteger - nextBigDecimal() – 读
BigDecimal
示例:读取 BigInteger 和 BigDecimal
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter a big integer: ");
BigInteger value1 = input.nextBigInteger();
System.out.println("Using nextBigInteger(): " + value1);
System.out.print("Enter a big decimal: ");
BigDecimal value2 = input.nextBigDecimal();
System.out.println("Using nextBigDecimal(): " + value2);
input.close();
}
}
输出
Enter a big integer: 987654321 Using nextBigInteger(): 987654321 Enter a big decimal: 9.55555 Using nextBigDecimal(): 9.55555
Scanner 内部工作原理
Scanner 读整行,再按空白符(默认)分割为标记。每个标记可用相应方法获取。如输入 He is 22,标记为 He、is、22。
提示: 标记默认按空格、制表符、换行符分隔,除非自定义分隔符。
java
- 深入理解 Java final 关键字:变量、方法与类的不可变性
- Java instanceof 运算符完全指南:用法、继承与接口检查
- 精通 Java 继承:核心概念、类型与实战示例
- 深入理解 Java 静态嵌套类:用法、差异与实战示例
- 精通 Java 匿名内部类:定义、语法与实战示例
- Java 单例模式详解:安全实现与使用指南
- 精通 Java 反射:运行时检查类、方法与字段
- 精通 Java ArrayList:操作、方法与最佳实践
- 掌握 Java ObjectOutputStream:序列化、核心方法与实战示例
- 掌握 Java Scanner:读取文本、数字与复杂类型的综合指南
- 掌握 Java 泛型:构建可复用、类型安全的代码
- 掌握 Java 文件操作:java.io 包下的创建、读取、写入与删除