用户交互Scanner
用户交互
获取用户的输入,实现程序和人的交互
Java提供了一个工具类,java.util.Scanner 是 Java5 的新特征通过 Scanner 类来获取用户的输入
1.Scanner对象
创建 Scanner 对象的基本语法
Scanner s = new Scanner(System.in);
2.next() 和 nextLine() 的区别
通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext() 与 hasNextLine() 判断是否还有输入的数据
-
next
//创建一个扫描器Scanner对象,用于接收键盘数据 Scanner s = new Scanner(System.in); System.out.println("Next方式接收:"); //判断用户还有没有输入字符 //hasNext方法当且仅当此扫描器有另一个标记时才返回 true if (s.hasNext()){ //读取到有效字符 //查找并返回来自此扫描器的下一个完整标记 String str = s.next(); System.out.println("输入内容:" + str); } //凡是属于IO流的类如果不关闭会一直占用资源.要养成好习惯用完就关掉. //如果你不彻底关, 占用资源就会觉得卡 s.close();
-
nextLine
//创建一个扫描器Scanner对象,用于接收键盘数据 Scanner scanner = new Scanner(System.in); System.out.println("nextLine方式接收:"); //判断用户还有没有输入字符 //hasNextLine方法当且仅当此扫描器有另一行输入时才返回 true if (scanner.hasNextLine()) { //读取到有效字符 //此扫描器执行当前行,并返回跳过的输入信息。 String str2 = scanner.nextLine(); System.out.println("输入内容:" + str2); } //凡是属于IO流的类如果不关闭会一直占用资源.要养成好习惯用完就关掉. //如果你不彻底关, 占用资源就会觉得卡 scanner.close();
区别:
next():
- 一定要读取到有效字符后才可以结束输入。
- 对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
- next() 不能得到带有空格的字符串。
nextLine():
- 以Enter为结束符,也就是说 nextLine() 方法返回的是输入回车之前的所有字符。
- nextLine() 可以获得空白。
3.其他方法
Scanner工具类还有接收其他数据类型的函数,例如 int 或 float 类型的数据,hasNextInt()、hasNextFloat() 来判断是否有该类型的数据输入,再使用 nextInt()、nextFloat 来读取
Scanner scan = new Scanner(System.in);
// 从键盘接收数据
int i = 0;
float f = 0.0f;
System.out.print("输入整数:");
if (scan.hasNextInt()) {
// 判断输入的是否是整数
i = scan.nextInt();
// 接收整数
System.out.println("整数数据:" + i);
} else {
// 输入错误的信息
System.out.println("输入的不是整数!");
}
System.out.print("输入小数:");
if (scan.hasNextFloat()) {
// 判断输入的是否是小数
f = scan.nextFloat();
// 接收小数
System.out.println("小数数据:" + f);
} else {
// 输入错误的信息
System.out.println("输入的不是小数!");
}
scan.close();
使用Scanner来输入多个数据,并求总和与平均数
Scanner scanner = new Scanner(System.in);
double sum = 0;
int m = 0;
while(scanner.hasNextDouble()){
double x = scanner.nextDouble();
m = m + 1;
sum = sum + x;
}
System.out.println(m + "个数的和为" + sum);
System.out.println(m + "个数的平均值是" + (sum / m));
scanner.close();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!