在java中接受多个输入时使用scanner类面临问题

在java中接受多个输入时使用scanner类面临问题,java,java.util.scanner,Java,Java.util.scanner,我试图从不同类的用户那里获取多个输入,如果我只使用字符串类型,我的代码工作得很好,但是当我使用任何其他类,如int、flot或任何其他类时,它会忽略下一个字符串输入。为什么会发生这种情况,任何一个都可以帮助我 Scanner obj = new Scanner(System.in); String a,b,c; int x,y,z; System.out.print("Enter any string: "); a = obj.nextLine(); System.out.p

我试图从不同类的用户那里获取多个输入,如果我只使用字符串类型,我的代码工作得很好,但是当我使用任何其他类,如int、flot或任何其他类时,它会忽略下一个字符串输入。为什么会发生这种情况,任何一个都可以帮助我

Scanner obj = new Scanner(System.in);
String a,b,c;
int x,y,z;
System.out.print("Enter any string: ");
a = obj.nextLine();
System.out.print("enter any int: ");
x = obj.nextInt();                                                                                             
System.out.print("Enter any thing: ");    //after getting input for int it ignore next string 
b = obj.nextLine();                       input
System.out.print("Enter any thing: ");
c = obj.nextLine();

调用
obj.nextInt()
后,用户在输入缓冲区中输入数字后按下的返回键仍然具有下线,因为
nextInt()
仅读取数字字符。您必须通过调用
obj.nextLine()
跳过这些字符,然后忽略结果。然后,您可以继续向用户请求其他输入

这将为您提供您所期望的:

Scanner obj = new Scanner(System.in);
String a,b,c;
int x,y,z;
System.out.print("Enter any string: ");
a = obj.nextLine();
System.out.print("enter any int: ");
x = obj.nextInt();
obj.nextLine();
System.out.print("Enter any thing: ");    //after getting input for int it ignore next string
b = obj.nextLine();
System.out.print("Enter any thing: ");
c = obj.nextLine();

System.out.println("1: " + b);
System.out.println("2: " + c);
样本运行:

Enter any string: anystring
enter any int: 12345
Enter any thing: anything
Enter any thing: more anything
1: anything
2: more anything