scanner.nextLine(); // 消耗掉换行符
这行代码的作用是读取并丢弃输入流中的换行符。这是因为在使用 Scanner
对象读取用户输入时,有时候会在输入流中留下未处理的换行符,这可能会导致后续的输入读取出现问题。
具体来说,当你使用 Scanner
的 nextInt()
或 next()
等方法读取输入时,这些方法会读取并返回输入的整数或单词,但不会消耗掉紧随其后的换行符。这个换行符会被留在输入缓冲区中,如果没有被正确处理,可能会影响后续的输入读取操作。
例如,如果你在读取一个整数后立即尝试读取一个字符串,由于换行符的存在,nextLine()
方法可能会立即读取到这个换行符并认为已经读取了一个完整的行,从而跳过预期的字符串输入。
通过添加 scanner.nextLine();
这行代码,可以确保读取并消耗掉这个换行符,从而避免上述问题。这样,后续的输入读取操作就能正常进行,而不会受到之前留下的换行符的影响。
总结来说,scanner.nextLine(); // 消耗掉换行符
这行代码是为了确保输入流中的换行符被正确处理,避免对后续输入读取操作造成干扰。
下面举例进行说明:
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 读取整数System.out.print("请输入一个整数: ");int number = scanner.nextInt();// 读取字符串System.out.print("请输入一个字符串: ");String text = scanner.nextLine();// 输出结果System.out.println("你输入的整数是: " + number);System.out.println("你输入的字符串是: " + text);scanner.close();}
}
运行结果:
在这个代码中,如果我们运行程序并输入一个整数和一个字符串,程序会跳过字符串输入的部分,直接输出整数和空字符串。这是因为 nextInt()
方法读取了整数,但没有消耗掉紧随其后的换行符。当 nextLine()
被调用时,它会立即读取到这个换行符并认为已经读取了一个完整的行,因此字符串输入被跳过了。
为了解决这个问题,我们需要在 nextInt()
之后添加 scanner.nextLine();
来消耗掉换行符:
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 读取整数System.out.print("请输入一个整数: ");int number = scanner.nextInt();scanner.nextLine(); // 消耗掉换行符// 读取字符串System.out.print("请输入一个字符串: ");String text = scanner.nextLine();// 输出结果System.out.println("你输入的整数是: " + number);System.out.println("你输入的字符串是: " + text);scanner.close();}
}
运行结果: