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

未找到:真

从世界顶级大学在线学习软件开发课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

结论

例如,本博客中给出的代码是目的,可以根据个人的需要进行修改。 如果您有兴趣了解有关 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 从底层流中读取字节并使用指定的字符集编码将它们转换为字符。 它是一个用于将字节流数据转换为字符流数据的类。 字节流表示二进制数据,字符流表示文本。