Java中nextLine()出现不执行跳过的情况。
当我们在使用多个扫描仪键盘输入时,偶尔会出现nextLine()方法不执行直接跳过的情况。
如下:
Scanner sc = new Scanner(System.in);
System.out.println("请输入1");
String s1 = sc.next();
System.out.println("请输入2");
String s2 = sc.nextLine();
System.out.println("结束");
运行结果:
请输入1
1
请输入2
结束
可以看出nextLine()并没有执行。
原因:
next()是从第一个有效字符开始扫描,遇到第一个空格’ '或者换行符 ‘\n’ 时结束。
nextLine()则是扫描剩下的所有字符串直到遇到回车 ‘\n’ 为止。
咱们这里输入的是 1\n
s1自然获得了1,而我们敲入的 \n 则直接被 s2 获得并结束。
解决方案:再添加一个nextLine()来吞掉遗留的 ‘\n’。
Scanner sc = new Scanner(System.in);
System.out.println("请输入1");
String s1 = sc.next();
System.out.println("请输入2");
sc.nextLine(); //吞掉\n
String s2 = sc.nextLine();
System.out.println("结束");
运行结果:
请输入1
1
请输入2
2
结束
成功解决问题。