Java 中 next() 和 nextLine() 方法的区别

10 Sept 2024 | 4 分钟阅读

Java next() 方法

Java 中的 next() 方法存在于 Scanner 类中,用于获取用户的输入。要使用此方法,需要创建一个 Scanner 对象。该方法只能读取直到遇到空格 (" ") 为止的输入。换句话说,它会查找并返回扫描器中的下一个完整标记。

next() 只能读取到空格为止。它无法读取用空格分隔的两个单词。此外,next() 在读取输入后会将光标保留在同一行。

NextMethod.java

输入

输出

First

Java nextLine() 方法

Java 中的 nextLine() 方法是 java.util.Scanner 类的一个方法。它读取输入字符串,直到行更改或遇到新行,然后以 \n 或按 Enter 键结束输入。通常,如果我们使用 next() 方法在 nextLine() 方法之前处理其他类型的输入(如 int 或 String 单词输入),我们通常会在 nextLine() 方法之前添加一个额外的 nextLine() 方法,否则 nextLine() 方法将返回一个空字符串。另一种方法是将始终使用 nextLine() 包装在 Integer.parseInt() 中。

该方法不接受任何参数。它返回字符串中的值,它返回被跳过的当前行。

异常

Java 中的 nextLine() 会抛出两种类型的异常:

  • NoSuchElementException: 当输入中找不到行时,nextLine() 方法会抛出 NoSuchElementException 异常。
  • IllegalStateException: 如果此 scanner 类已关闭,该方法会抛出 IllegalStateException 异常。关闭 Scanner 时,如果输入源实现了 Closeable 接口,它将关闭其输入源。该接口将不再能够从用户那里获取输入。

nextLine() 方法的示例

在以下代码中,我们将看到 nextLine() 方法如何读取输入字符串,直到行更改或遇到新行,然后以 \n 或按 Enter 键结束输入,并将下一行的输入保留为下一个方法的缓冲区。

NextLine.java

输出

Hello
 World
 Hello World

让我们看另一个例子。

NextLineExample.java

输出

输出

The integer value is : 10
String word value is : Hello
String next line value is : World

Java 中 nextLine() 方法的内部工作原理?

Java 中的 nextLine() 是 java.util.Scanner 类的一个方法。它用于存储用户输入的 String 类型的值。在实现此方法以获取用户输入之前,必须先构造一个 Scanner 对象。该方法的主要目的是它一直读取到行尾。它读取输入字符串,直到行更改或遇到新行,然后以 \n 或按 Enter 键结束输入。

由于 Java 中的 nextLine() 在查找行分隔符时会继续读取输入,因此如果不存在行分隔符,它可能会缓冲整行读取的输入并将其忽略。nextLine() 读取输入,包括单词之间的空格(即,它一直读取到行尾 \n)。一旦读取了输入,nextLine() 会将光标移动到下一行。

Java next() 与 nextLine() 方法

next() 方法nextLine() 方法
它通常从用户那里读取单个单词输入(以 String 形式),或者直到输入达到空格字符。此方法通常从用户那里读取输入,直到下一行为止。
它无法读取包含空格的单词。此方法可以读取包含空格的单词。
在遇到空格后,该方法停止读取输入。一旦遇到行分隔符 \n 或按下 Enter 键,此方法就会停止读取输入,但它会读取空格。
在收到输入后,光标会停留在相同的位置或同一行。在收到输入后,光标会移到下一行。
next() 引用空格的转义序列。nextLine() 引用的转义序列是行分隔符 /n。
示例:对于字符串 "Hello World",next() 方法只会读取 "Hello" 这个单词。示例:对于字符串 "Hello World",nextLine() 方法将读取 "Hello World" 这个单词。