- 程序需要使用
java.util.Scanner类,用于从控制台读取用户输入。
Scanner是Java中用来读取用户输入的工具类,主要从控制台或文件中扫描并解析文本数据,比如整数、小数或字符串。
- 快速上手Scanner
- 先导包:在代码开头写
import java.util.Scanner;,只有java.lang包下的内容不用导包。 - 创建对象:绑定输入源,控制台输入固定写
Scanner sc = new Scanner(System.in);。 - 读取数据:调用对应的
nextXxx()方法获取输入,比如nextInt()读整数、nextLine()读一整行字符串。 - 用完关闭:调用
close()释放资源,或者用try-with-resources语句自动关闭。
- next()和nextLine()有啥区别
- next() :只读到空格或回车前的有效字符,遇到空格就停止,光标停在当前行,不能读带空格的字符串。
- nextLine() :读取整行内容包括空格,直到遇到回车键才结束,光标移到下一行,可以读带空格的文本。
- 常见坑点:先用
nextInt()再用nextLine()时,回车符会留在缓冲区被下一行的nextLine()直接读走,解决方法是在中间加一个scanner.nextLine()消耗掉遗留的回车符。
- 怎么避免程序崩溃
- 输入前先判断:用
hasNextInt()、hasNextDouble()等方法检查输入是否匹配,避免用户输错类型导致程序报错。 - 循环提示重输:如果输入不合法,用while循环让用户重新输入直到正确。
- 处理异常:用try-catch块捕获
InputMismatchException异常,给出友好提示
- 代码:
import java.util.Scanner;
public class BankMenu {
private static double balance = 0;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请选择您的操作:");
System.out.println("1:查询余额");
System.out.println("2:存款");
System.out.println("3:取款");
System.out.println("4:退出程序");
int choice = scanner.nextInt();
switch (choice) {
case 1 -> {
System.out.println("当前余额为:" + balance);
}
case 2 -> {
System.out.println("请输入存款金额:");
double money = scanner.nextDouble();
balance += money;
System.out.println("存款成功,当前余额为:" + balance);
}
case 3 -> {
System.out.println("请输入取款金额:");
double money = scanner.nextDouble();
if (money > balance) {
System.out.println("取款失败,余额不足");
} else {
balance -= money;
System.out.println("取款成功,当前余额为:" + balance);
}
}
case 4 -> {
System.out.println("程序已退出");
scanner.close();
return;
}
default -> {
System.out.println("没有这个选项,请重新输入");
}
}
}
}
}