为何两个nextInt()方法之间无需添加scanner.nextLine()方法?
为什么使用Scanner的nextInt()无需额外处理输入后的回车键?
先看你给出的代码:
Scanner scanner = new Scanner(System.in); System.out.println("Enter first number"); int FirstNumber = scanner.nextInt(); System.out.println("Entered First Number is" + FirstNumber); System.out.println("Enter Second Number"); int SecondNumber = scanner.nextInt(); System.out.println("Entered Second Number is" + SecondNumber);
原因其实很直白:
nextInt()方法本身就会自动跳过所有前置空白字符,包括回车键产生的换行符、空格、制表符这些。- 当你输入数字后按回车,输入缓冲区里实际是「数字内容+换行符」,
nextInt()只会提取其中的数字部分,把换行符留在缓冲区里。 - 后续再次调用
nextInt()时,它依然会自动跳过前面残留的换行符,直接读取下一个有效数字,所以不会出现被换行符干扰的情况。
举个反例:如果在nextInt()之后调用nextLine(),这时候nextLine()会直接读取缓冲区里剩下的换行符,导致你看起来像是「跳过了输入」,这种情况才需要额外加一行scanner.nextLine()来清空残留的换行符,但连续用nextInt()就完全不需要这一步。
内容的提问来源于stack exchange,提问作者Jignesh Nayak
相关产品推荐
相关产品推荐

