Scanner next()和nextLine()的区别

测试完整字符串:哈哈 呵呵 笑嘻嘻
scanner.next():读取输入内容中第一个没有空白符的内容。在它之后的读取操作(next或nextLine)会继续读,直到流中的内容被读完。比如第一次读的是"哈哈",第二次读的是"呵呵"。scanner.nextLine():读取输入内容中整行内容。
示例1:nextLine+nextLine

        Scanner input = new Scanner(System.in);
        System.out.println("请输入字符串(nextLine):");
        String str = input.nextLine();
        System.out.println(str);

        System.out.println("请输入字符串(nextLine):");
        String str1 = input.nextLine();
        System.out.println(str1);

结果:

示例2: nextLine+next

        Scanner input = new Scanner(System.in);
        System.out.println("请输入字符串(nextLine):");
        String str = input.nextLine();
        System.out.println(str);

        System.out.println("请输入字符串(next):");
        String str1 = input.next();
        System.out.println(str1);

结果:

 示例3:next+next

Scanner input = new Scanner(System.in);
        System.out.println("请输入字符串(next):");
        String str = input.next();
        System.out.println(str);

        System.out.println("请输入字符串(next):");
        String str1 = input.next();
        System.out.println(str1);

结果:

示例4:next+nextLine

 Scanner input = new Scanner(System.in);
        System.out.println("请输入字符串(next):");
        String str = input.next();
        System.out.println(str);

        System.out.println("请输入字符串(nextLine):");
        String str1 = input.nextLine();
        System.out.println(str1);

结果:

 

其实,就是输入的完整字符串->缓冲到流中->读取->流中还有剩余字符串,继续读取...

所以,nextLine不会影响后面的next或nextLine,但是next会影响后面的next和nextLine。

(因为next读的是流中第一个没有空白符的内容,一次可能没读完;nextLine读的是流中整行的内容,一次读完)

扫描器跳过录入的问题

要弄清楚这个问题,首先要知道,对于用户录入的内容,会带上换行符写到一个缓冲流中,next方法在读取的时候会忽略换行符,nextLine方法在读取的时候会带上换行符,所以next+next/nextLine+nextLine/nextLine+next不存在跳过录入的问题,即一个录入结束另一个录入会等待用户的操作。还有一点,就是next和nextLine都会以回车符作为结束符。

正常情况:光标定位处录入完毕手动回车结束。

发生场景:next+nextLine

原因:缓冲区还有换行符,第一次录入结束后,第二次准备录入的时候,读出了缓冲区的换行符,直接换了一行,即光标从等待录入的一行跳到下一行去了,然后也就结束了,都还没有录入内容(可以理解为默认输了一个换行符然后回车结束了)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值