java prompt + get number before get a string containing any space (一个或多个)

java prompt + get number before get a string contain any space (one or more)

我需要从提示中获取一个数字,然后在我需要从提示中获取一个字符串列表后调整。我有个问题。如果第一个问题询问带有 nextLine() 的字符串是否可以,请参阅 .

Java代码:

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a number:");
    int num = input.nextInt();
    System.out.println("Enter a name list:");
    String nameList = input.nextLine();
    System.out.println("Enter last name:");
    String lastName = input.nextLine();
    input.close();
    System.out.println(num + " * " + nameList + " ** " + lastName);
}

控制台结果:

Enter a number:
2
Enter a name list:
Enter last name:

第一个回复是 2 + 输入

但是在2+回车后,程序显示Enter a name list: Enter last name:

我会使用 input.next() 而不是 input.nextLine() 作为用户输入的 next 块,而 nextLine 将扫描仪移过当前行并缓冲所有输入直到它找到一个行分隔符。

或在 nextInt 之后使用 nextLine() 来使用 nextInt

留下的换行符

解决方案在 int num = input.nextInt(); 之后添加 input.nextLine(); juste。

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a number:");
    int num = input.nextInt();
    input.nextLine();
    System.out.println("Enter a name list:");
    String nameList = input.nextLine();
    System.out.println("Enter last name:");
    String lastName = input.nextLine();
    input.close();
    System.out.println(num + " * " + nameList + " ** " + lastName);
}

控制台:

Enter a number:
2
Enter a name list:
aa bb cc
Enter last name:
dd
2 * aa bb cc ** dd