当输入前面是整数输入时,将跳过字符串变量的输入

input for a String variable is skipped when it is preceeded by an integer input

我正在练习扫描仪的用法和语法,下面是我编写的代码,我在其中尝试从用户那里获取 4 个输入:

    Scanner s= new Scanner(System.in);
    
    int a = s.nextInt();// taking an integer as input, it works fine.
    String b = s.nextLine();//was supposed to take a string input, but not working
    String c=s.nextLine();//takes a string as input from user
    String d=s.nextLine();//takes another string as input from user

    System.out.println("integer entered: "+a);
    System.out.println("first string entered: "+b);
    System.out.println("second string entered: "+c);
    System.out.println("third string entered: "+d);

但用户只能提供 3 个输入,第一个整数和其他两个字符串输入,通过打印这 4 个变量的值,很明显第一个字符串 String b 的输入是 skipped.I 然后尝试重新排列输入的顺序,即

String b = s.nextLine();//takes a string input
int a = s.nextInt();// taking an integer as input
String c=s.nextLine();//was supposed to take a string as input from user
String d=s.nextLine();//takes another string as input from user

在这种情况下,将跳过第二个字符串 String c 的输入。 那么,是不是因为整数输入跳过了下一个字符串输入?

这是一个常见问题。


固定码

Scanner s= new Scanner(System.in);
int a = s.nextInt();
s.nextLine();
System.out.print("Enter a string: ");
String b = s.nextLine();
System.out.print("Enter another string: ");
String c=s.nextLine();
System.out.print("Enter one more string: ");
String d=s.nextLine();

System.out.println(a+"\n"+b+d+c);

参考: Scanner is skipping nextLine() after using next() or nextFoo()?