[Java基础]next()和nextLine()的一些问题

Question:

Scanner类的nextLine()放在其他nextXxx()或next()方法下会失去录入机会


  1. 如果nextLine()之前有其他Scanner类的next方法时,会受到影响,失去录入机会

    [Java基础]next()和nextLine()的一些问题

  2. 将第一个nextLine()方法提到最前面,使其前面没有其他Scanner类的next方法

    [Java基础]next()和nextLine()的一些问题

  3. nextLine()方法之间不会相互影响

    [Java基础]next()和nextLine()的一些问题

  4. nextLine()之前有next()方法,两个方法之间有其他代码,nextLine()方法也会收到影响

    [Java基础]next()和nextLine()的一些问题


Answer:

  • next()和nextLine()的区别

    ​ Scanner是一个扫描器,录入到键盘的数据,先存到缓存区等待读取,判断读取结束的标示是分隔符;比如空格,回车,tab 等。

    ​ nextLine():接收缓冲区中所有的字符,在遇到回车换行符时停止,回车换行符也会接收掉

    ​ next():接收到缓冲区第一个有效字符(之前的分隔符自动过滤,不接收)开始,遇到的第一个分隔符结束(tab键,空格,回车换行),分隔符不会接收掉

  • nextLine()的使用场景

    ​ 单独使用nextLine()可以清空缓冲区,避免缓冲区剩余的数据对下次输入有影响

上一篇:sc.next() 和 sc.nextLine


下一篇:12-知识笔记(Scanner对象)