在 Java 中按 Enter 继续

Rupam Yadav 2023年10月12日
在 Java 中按 Enter 继续

本文将向你展示我们如何将控制台置于暂停状态,直到用户按下 Enter,然后才会显示下一条消息。在以下示例中,我们将使用 Scanner 类获取三个输入,然后将它们显示在控制台上。

在 Java 中使用额外的 nextLine() 等待 Enter 键

在示例中,我们创建了一个 Scanner 类的对象,即 scScanner 扫描文本并解析原始类型,如 intString。这个类带有很多用于输入操作的方法。最常用的方法是 nextInt()nextLinenextDouble 等。

在下面的示例中,我们将看到问题所在,并在下一个示例中使用一种技术来解决它。

在这里,我们采用三个输入:int 类型,接下来的两个是 String 类型。我们使用 Scanner 类首先调用 nextInt() 方法将年龄的输入输入到 int 类型变量中;然后,为了输入名字和姓氏,我们使用两个 sc.nextLine() 方法和两个变量来存储它们。最后,我们在输出中显示变量的所有值。

问题在于当用户输入 age 的值并按 Enter 键时。控制台应该获得 firstName 的输入,但它跳过它并直接进入 lastName。下面的输出清楚地显示了问题。

import java.util.Scanner;

public class EnterContinue {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.print("Enter your age: ");
    int age = sc.nextInt();

    System.out.print("Enter your First Name: ");
    String firstName = sc.nextLine();

    System.out.print("Enter your last Name: ");
    String lastName = sc.nextLine();

    System.out.println("Your Info:\nAge: " + age + "\nFull Name: " + firstName + " " + lastName);
  }
}

输出:

Enter your age: 23
Enter your First Name: Enter your last Name: John
Your Info:
Age: 23
Full Name:  John

Process finished with exit code 0

既然我们知道了这个问题,我们就可以讨论解决方案以及首先为什么会出现问题。当我们将 int 值作为输入时,方法 nextInt() 读取 int 值并且无法读取换行符。这就是为什么当我们在阅读 int 后按 Enter 时,控制台会将其视为换行符并将其跳到以下语句。

我们必须在 nextInt() 函数之后使用一个额外的 nextLine() 方法,该方法将跳过换行符并显示下一行来解决这个问题。在输出中,我们可以看到现在我们可以输入名字,这在前面的示例中是不可能的。

import java.util.Scanner;

public class EnterContinue {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.print("Enter your age: ");
    int age = sc.nextInt();

    System.out.print("Enter your First Name: ");
    String firstName = sc.nextLine();
    sc.nextLine();

    System.out.print("Enter your last Name: ");
    String lastName = sc.nextLine();

    System.out.println("Your Info:\nAge: " + age + "\nFull Name: " + firstName + " " + lastName);
  }
}

输出:

Enter your age: 5
Enter your First Name: gfd
Enter your last Name: gfgf
Your Info:
Age: 5
Full Name:  gfgf
作者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

相关文章 - Java Scanner