关于为什么java中nextInt()和nextLine()不能混用 | nextInt()和nextInt()之类的可以一起用
键盘录入的区别:
第一套体系:遇到空格、制表符、回车都结束,并且都不接收
- nextInt()、nextDouble()、next() 遇到空格、制表符、回车就结束,只接收其之前的数据,空格以及空格之后的数据都在缓冲区内,如果有下一个待输入的变量值,会将缓冲区内的值传递给下一个变量(相当于缓冲区放着了先),但是不会接收缓冲区内的空白回车等字符
举例:两个nextInt()可以连着用
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt(); //输入123 321 回车
System.out.println(num1); //输出123
int num2 = sc.nextInt(); //直接跳过了
System.out.println(num2); //输出321
解释: 第一个输入123 321 回车,缓冲区内是 321回车,由于缓冲区内已经有值了,所以会直接交给第二个变量,nextInt()由于不会接收空格和回车,所以直接输出是321
第二套体系:遇到回车结束,并且接收空格、制表符、回车
- nextLine():可以接收空格、制表符、回车,遇到回车才结束【常用】
nextInt()和nextLine()不可以混着用:
int num = sc.nextInt(); //输入3+回车
System.out.println(num); //输出3
String name = sc.nextLine(); //不给输入的机会
//因为nextInt输入的回车放在缓冲区,nextLine会读入回车,直接结束
//可以在每次输入完之后使用nextLine()清除一下缓存区