1. Scanner(控制台输入)
1.1 概述
Scanner 是 Java 提供的用于接收控制台输入的工具类,属于引用数据类型。
1.2 使用步骤
- 1.2.1 导包:在类的最顶部导入,
import java.util.Scanner; - 1.2.2 创建对象:遵循引用数据类型的创建格式
类名 变量名 = new 类名();
Scanner sc = new Scanner(System.in);- 1.2.3 调用方法:通过对象调用输入方法获取用户输入
1.3 常用输入方法
| 方法 | 说明 |
|---|---|
sc.next() | 读取一个单词,遇到空格停止 |
sc.nextLine() | 读取整行内容,遇到回车停止 |
sc.nextInt() | 读取一个整数 |
sc.hasNextInt() | 判断下一个输入是否为整数,返回 boolean |
- 1.3.1 next() 与 nextLine() 的区别:
next()以空格为分隔符,只读取第一个单词;nextLine()读取整行包括空格,直到回车为止
1.4 典型示例
- 1.4.1 读取姓名和年龄:
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
if (age >= 18) {
System.out.println("你已成年");
}
System.out.println("请输入你的姓名:");
String name = sc.next();
System.out.println("姓名是:" + name + " 年龄是:" + age);- 1.4.2 nextLine 与 next 混用:
String string = sc.nextLine(); // 读取整行
System.out.println("nextLine = " + string);
String next = sc.next(); // 读取单词
System.out.println("next = " + next);- 1.4.3 综合练习——控制台创建数组并赋值:结合
Scanner与数组动态初始化,循环为每个元素赋值
Scanner sc = new Scanner(System.in);
System.out.println("请输入您想创建数组的长度(纯数字)");
int len = sc.nextInt();
int[] ints = new int[len];
for (int i = 0; i < len; i++) {
System.out.println("请给数组中" + i + "元素赋值");
ints[i] = sc.nextInt();
}
System.out.println(Arrays.toString(ints));- 1.4.4 输入校验——hasNextInt() 配合 while 过滤非法输入:
Scanner sc = new Scanner(System.in);
while (!sc.hasNextInt()) {
sc.nextLine();
System.out.println("请输入正确数字");
}
int i = sc.nextInt();
System.out.println("i = " + i);2. 示例代码
2.1 Demo06(day02)
java
package com.itszt.day02;
import java.util.Scanner;
public class Demo06 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// nextLine:读取整行
String string = sc.nextLine();
System.out.println("nextLine = " + string);
// next:读取单词,遇空格停止
String next = sc.next();
System.out.println("next = " + next);
}
}2.2 Demo05(day03)
package com.itszt.day03;
import java.util.Arrays;
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入您想创建数组的长度(纯数字)");
int len = sc.nextInt();
int[] ints = new int[len];
for (int i = 0; i < len; i++) {
System.out.println("请给数组中" + i + "元素赋值");
ints[i] = sc.nextInt();
}
System.out.println(Arrays.toString(ints));
}
}2.3 Demo06(day03)
package com.itszt.day03;
import java.util.Scanner;
public class Demo06 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (!sc.hasNextInt()) {
sc.nextLine();
System.out.println("请输入正确数字");
}
int i = sc.nextInt();
System.out.println("i = " + i);
}
}3. 总结
| 知识点 | 核心要点 |
|---|---|
| 导包 | import java.util.Scanner; |
| 创建对象 | Scanner sc = new Scanner(System.in); |
next() | 读取单词,空格截断 |
nextLine() | 读取整行,回车截断 |
nextInt() | 读取整数 |
hasNextInt() | 判断下一个输入是否为整数 |
| 输入校验 | while(!sc.hasNextInt()) 过滤非法输入 |