Java 中使用 Scanner 输入多个字符串 [附编码示例]
已发表: 2021-02-05目录
介绍
在 java.util 包中,扫描器是帮助收集原始类型(如双精度、整数、字符串等)的多个输入的类之一。尽管它不是在时间起作用的 Java 程序中读取输入的有效方法作为一种约束,它无疑是从用户那里收集多个输入的最简单方法之一。 在本博客中,您将学习如何使用扫描器类在 Java 程序中收集用户的多个字符串输入。
使用 Scanner 获取多个输入的方法
在使用 Scanner 类之前,您必须在程序中导入 java.util 包。 下表列出了用于在 Java 程序中从用户获取不同类型的多个输入的方法。
方法 | 输入 |
下一个整数() | 整数 |
下一个浮动() | 漂浮 |
下一个双() | 双倍的 |
下一个长() | 长 |
下一个短() | 短的 |
下一个() | 一个字 |
下一行() | 字符串行 |
nextBoolean() | 布尔值 |
使用 Java nextLine() 方法
java.util.Scanner.nextLine() 方法返回通过将扫描仪推进到当前行而跳过的行。 如果在当前行的末尾给出了行分隔符,则此方法将其排除并从当前行返回字符串的其余部分。 扫描仪设置在下一行开头并读取整个字符串,包括单词的空格。
nextLine() 方法的语法如下:
公共字符串 nextLine()
此方法引发以下两个异常:

- NoSuchElementException – 如果字符串为空或找不到行。
- IllegalStateException – 如果扫描仪已关闭。
例子
以下示例演示了 java.util.Scanner.nextLine() 方法如何收集来自用户的多个输入。
导入 java.util.Scanner; 公共类 SacnnerDemoMultipleString { 公共静态无效主要(字符串 [] 参数) { 扫描仪演示 = 新扫描仪(System.in); System.out.print(“请输入多个要打印的输入:”); //接受一个整数输入 String[] string = new String [demo.nextInt()]; // 使用上面输入的 <enter> demo.nextLine(); for (int i = 0; i < string.length; i++) { 字符串[i] = demo.nextLine(); } System.out.println(“\n您输入了以下内容:”); //for-each 循环打印字符串 for(字符串str:字符串) { System.out.println(str); // 关闭扫描仪 扫描仪.close(); } } } |
上面的程序将打印以下输出
请输入您要打印的多个输入:7 米莎 哈利 罗伯特 哈维 吉尔 雷切尔 珍妮弗 您已输入以下输入: 米莎 哈利 罗伯特 哈维 吉尔 雷切尔 珍妮弗 |
使用 Java nextInt() 方法
java.util.Scanner.nextInt() 方法将用户提供的输入扫描为整数。 如果找到一个整数,则扫描仪会超过匹配的输入。
nextInt() 方法的语法如下:
公共 int nextInt()
此方法抛出以下三个异常:
- InputMismatchException – 如果下一个标记与整数正则表达式不匹配,或者下一个标记超出范围。
- NoSuchElementException – 如果输入已用尽。
- IllegalStateException – 如果扫描仪已关闭。
例子
下面的示例演示 java.util.Scanner.nextInt() 方法如何收集来自用户的多个输入。
// Java 程序使用 Scanner 扫描整数 // 分类并打印它们的平均值。 导入 java.util.Scanner; ![]() 公共类 ScannerDemoInteger { 公共静态无效主要(字符串 [] 参数) { 扫描仪演示 = 新扫描仪(System.in); // 初始化输入元素的总和和计数 整数总和 = 0,计数 = 0; // 检查是否存在整数值 而 (demo.hasNextInt()) { // 扫描一个整数值 int num = demo.nextInt(); 总和 += 数量; 计数++; } 整数平均值=总和/计数; System.out.println(“平均值:” + 平均值); } } |
上面的程序由以下输入提供:
101 223 238 892 99 500 728 |
上面的程序将打印以下输出:
平均值:397 |
另请阅读:Java MVC 项目
使用 Java nextDouble() 方法
java.util.Scanner.nextDouble() 方法将用户提供的输入扫描为双精度。 如果找到了一个浮点正则表达式,那么扫描器就会超过匹配的输入。
nextInt() 方法的语法如下:
公共双 nextDouble()

此方法抛出以下三个异常:
- InputMismatchException – 如果下一个标记与浮点正则表达式不匹配,或者下一个标记超出范围。
- NoSuchElementException – 如果输入已用尽。
- IllegalStateException – 如果扫描仪已关闭。
例子
该示例演示了 java.util.Scanner.nextDouble() 方法如何收集来自用户的多个输入。
// Java 程序使用 Scanner 扫描浮点数 导入 java.util.Scanner; 公共类 ScannerDoubleRegularExpression { 公共静态无效主要(字符串[]参数){ 字符串新 = “早上好! 3 + 3.0 = 6 真”; // 用指定的字符串对象写一个新的扫描器对象 扫描仪演示 = 新扫描仪; // 使用美国语言环境能够识别字符串中的双精度 demo.useLocale(Locale.US); // 搜索下一个双标记并打印 while (demo.hasNext()) { // 如果下一个是双精度,则打印找到的浮点正则表达式 if (demo.hasNextDouble()) { System.out.println(“找到:” + demo.nextDouble()); } // 如果没有找到双正则表达式,打印“Not Found”和标记 System.out.println(“未找到:” + demo.next()); } // 关闭扫描仪 扫描仪.close(); } } |
上述程序将产生以下输出:
未找到:好 未找到:早上! 找到:3.0 未找到:+ 找到:3.0 未找到:= 找到:6.0 未找到:真 |
结论
例如,本博客中给出的代码是目的,可以根据个人的需要进行修改。 如果您有兴趣了解有关 Java 和全栈软件开发的更多信息,请查看 upGrad 和 IIIT-B 的全栈软件开发执行 PG 计划,该计划专为工作专业人士设计,提供 500 多个小时的严格培训,9+项目和任务、IIIT-B 校友身份、实用的实践顶点项目和顶级公司的工作协助。
Java 中的 Scanner 类是什么?
Scanner 类允许您从键盘读取值,而无需使用 Java 的控制台输入。 Java 的控制台输入很慢,它的重定向也很慢。 Scanner 更快更方便,所以应该使用 Scanner 来代替 Java 的控制台输入。 Scanner 使用 Java 的常规输入流,因此可以与其他解析器链接。 Scanner 也比 Java 的控制台输入更容易使用。 Scanner 主要有 3 个子类,即 BufferedReader、InputStreamReader 和 FileReader。 最通用的是BufferedReader。 BufferedReader 可以读取任何 InputStreamReader 可以读取的内容,而且它有一个很大的优势:缓冲区。 缓冲区一次可以容纳一行。 输入流根本没有缓冲区:当您调用 next() 时,它会返回值。 这意味着您必须先收集这些值,然后才能对它们进行任何操作。 扫描仪为您完成。
Java 中的字符串生成器是什么?
字符串生成器是一种用于创建字符串的新型类。 字符串生成器类是从 1.3 版本开始在 Java 中引入的。 它允许您通过连接多个字符串来创建一个字符串,并在您向其中添加更多字符串时自动调整其大小。 与字符串连接相比,使用字符串生成器更快、更灵活,但可读性较差。 StringBuilder 对象是用于创建字符串值的对象。 StringBuilder 对象有许多方法。
Java 中的 InputStreamReader 是什么?
InputStreamReader 从输入流中读取字符流并将其解码为指定的字符编码。 它提供了一种将字符流从一种编码转换为另一种编码的简单方法。 InputStreamReader 从底层流中读取字节并使用指定的字符集编码将它们转换为字符。 它是一个用于将字节流数据转换为字符流数据的类。 字节流表示二进制数据,字符流表示文本。