
Scanner——使用引用类型的基本步骤
导包为了使用Scanner类,需在代码中导入相应的包。通常,这可以通过在你的项目的build.gradle中的dependencies中添加使用还是通过在代码中手动导入:
发布日期:2021-05-24 15:20:03
浏览次数:13
分类:精选文章
本文共 5067 字,大约阅读时间需要 16 分钟。
Scanner是Java提供的一个功能强大的工具类,用于处理输入流。它不仅可以从标准输入读取数据,还可以处理不同的数据类型,提升了Java程序的输入处理效率。以下是关于Scanner类的详细说明和应用实例。
Scanner类概述
Scanner类也是Java的ITH层次上提供的一个强大工具。它能够简化从标准输入(System.in)读取不同类型数据的过程,与C语言中的scanf函数类似,但功能更为强大和灵活。在编程中,Scanner类常用于批量读取或解析输入数据,适用于多种形式的输入处理需求。
为什么使用Scanner类?
- 简化输入操作:Scanner类提供了一系列便捷的方法,可以自动解析输入的字符串为数值类型(如int、double等),大大简化了手动转换的繁琐过程。
- 统一处理多种输入类型:无论是整数、浮点数、字符串还是其他类型,Scanner都提供对应的方法进行处理。
- 提高可读性和可维护性:使用Scanner类可以减少手动输入处理的代码,提升代码的可读性和可维护性。
Scanner类的基本用法
import java.util.Scanner;
- 创建Scanner对象Scanner类由System.in实例创建,System.in是代表标准输入流。下面是创建Scanner对象和获取输入流的示例代码:
- 读取输入有多种方法可以用来读取输入:
read()方法:这个方法覆盖了一个字符的读取。如果要读取多个字符,可以连续调用,但可能更常用的是:
readLine()方法:读取一行输入,包括换行符前后的空白字符。默认情况下,返回一个字符串,包括换行符。
对于不同类型的数据,Scanner依次提供以下方法:
- readInt(): 读取整数值。
- readDouble(): 读取浮点数值。
- readLong(): 读取长整数值。
- readString(): 读取字符串值。
- 等等。
- 关闭资源在读取完输入后,应该及时关闭Scanner实例和输入流,以释放系统资源。这样可以避免潜在的内存泄漏问题。
- 批量读取输入:在某些情况下,读取所有输入更为方便,可以利用
scanner-use-delimiter
方法: - 自定义编码:根据需要,可以调整Scanner的编码方式,避免字符集编码问题:
Scanner scanner = new Scanner(System.in);
完整示例
以下是一个将输入转换为整数的完整示例:
import java.util.Scanner;public class ScannerDemo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入一个整数:"); while (true) { try { int num = scanner.nextInt(); System.out.println("你输入的数字是:" + num); break; } catch (java.util.InputMismatchException e) { System.out.println("输入错误,请重新输入整数。"); } } scanner.close(); }}
读取字符串的示例
以下是一个读取字符串的示例:
import java.util.Scanner;public class ScannerString { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入一个字符串:"); while (true) { try { String str = scanner.nextLine(); System.out.println("你输入的字符串是:" + str); break; } catch (java.util.InputMismatchException e) { System.out.println("输入错误,请重新输入字符串。"); } } scanner.close(); }}
更高级用法
配置扫描规则:
有时,你可能需要根据需要自定义如何处理输入。例如,读取一个多个数字组成的字符串,而不是单独的数字。可以使用Scanner的scan
方法来实现更细小的解析控制:
import java.util.Scanner;public class CustomScanner { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入数字,例如:123, 456, 789:"); while (true) { try { String input = scanner.nextLine(); // 当然,这只是一个示例,可能需要更多的处理逻辑。 int firstDigit = Integer.parseInt(input.substring(0, 1)); System.out.println("你输入的第一个数字是:" + firstDigit); // 假设你想阅读多个数字 break; } catch (java.util.InputMismatchException e) { System.out.println("输入错误,请重写清晰的数字字符串。"); } } scanner.close(); }}
综合示例:根据不同输入类型进行处理
有时候,读取用户输入后需要根据输入内容进行不同的处理。这可以通过封装条件判断实现:
import java.util.Scanner;public class MultiScanner { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入你的身份:学生、教师还是游客?"); while (true) { String role = scanner.nextLine().trim(); switch (role) { case "学生": System.out.println("你希望获得哪个课程呢?"); String course = scanner.nextLine().trim(); System.out.println("感谢您选择我们的" + course + "课程!"); break; case "教师": System.out.println("欢迎加入我们教师团队!"); break; case "游客": System.out.println("有什么可以帮助您的吗?"); break; default: System.out.println("请确认您是学生、教师还是游客。"); } } scanner.close(); }}
扩展学习
import java.util.Scanner;public class BatchScan { public static void main(String[] args) { System.out.println("请输入多行输入,按回车结束:"); Listinputs = new ArrayList<>(); scanner.useDelimiter("\n"); while (scanner.hasNext()) { inputs.add(scanner.nextLine()); } scanner.close(); System.out.println("你输入的所有内容: " + String.join("\n", inputs)); }}
import java.util.Scanner;public class EncodingDemo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in, StandardCharsets.CHARSET_ISO_8859_15); System.out.println("输入的字符编码是什么?"); while (true) { try { String input = scanner.nextLine(); System.out.println("你输入的是:" + input); break; } catch (java.util.InputMismatchException e) { System.out.println("输入错误,请重新输入; } } scanner.close(); }}
结论
通过以上实例,我们可以看到,Scanner类在Java编程中的强大功能和灵活性。它不仅可以读取文本数据,还可以读取多种数据类型,适用于不同的输入需求。尤其是在需要处理多种情况或批量读取输入的场合,Scanner类是一个非常有价值的工具。
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月20日 22时45分19秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【初窥javascript奥秘之闭包】叶大侠病都好了,求不踩了:)
2019-03-22
【grunt整合版】30分钟学会使用grunt打包前端代码
2019-03-22
关于前端框架升级与全站样式替换的简单建议
2019-03-22
【问答23】Linux移植:如何制作rootfs?
2019-03-22