参考价值:已完结、可以参考


情景回顾

今天练习代码,遇见了以下情况:

(1)

(2)

(3)

(4)

基本就是只要nextLine()前面有输入语句,那么nextLine()就会直接结束不会输入任何字符串。而将nextLine()换成next()就不会有这种情况。

这是为什么呢?

nextLine()相比于nextInt()、nextDouble()、next()等方法缺少一个类似于保护机制的东西。

比如:

当我们输入“1”并按下回车键时,“1”会被nextInt()接受,而回车却被留在标准输入流当中了,如果下一个就是nextLine(),那么nextLine()就会直接读取到回车键,然后执行,这样我们就无法输入任何数据。

那么为什么把换成next()就没事了呢,因为next()如果没有读取到任何数据是不会结束的,nextDouble()、nextInt()等都有这个保护机制。

比如: