码迷,mamicode.com
首页 > 编程语言 > 详细

【JAVA】Scanner.next()与Scanner.nextLine()的区别

时间:2020-03-15 13:24:43      阅读:46      评论:0      收藏:0      [点我收藏+]

标签:https   str   article   没有   ext   super   解决方法   为什么   details   

参考链接

1、next()方法

  • next()方法在遇到有效字符前所遇到的空格、tab键、enter键都不能当作结束符,next()方法会自动将其去掉;

  • 只有当next()方法遇到有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符

  • 所以next()不能得到带有空格的字符串,只能得到部分字符串(空格前面的)。

2、nextLine()方法

  • nextLine()方法的结束符是Enter键,即nextLine()方法返回的是Enter键之前的所有字符串

  • 所以nextLine()方法可以获取到带有空格的字符串。

再加一个辨析

  • 1.在next()和nextLine()方法连用时,nextLine()会在刚刚输入时就误认了前面next()结束输入的Enter,因此还没等输入就直接结束了;

  • 2.那么为什么反过来nextLine()在前、next()在后,next()就没有这个问题呢?
    这是因为next()方法在输入时要遇到一个有效字符后再遇到Enter才会结束,因此当它刚输入就遇到Enter是不会结束的,也就可以继续输入了。

  • 3.解决方法:如果一定要用nextLine(),可以在nextLine()前再添加一个nextLine()用于回收Enter,这样下一个nextLine()就可以正常输入了。
    例如:

        `Scanner s = new Scanner(System.in);`

   String str1 = s.next();

   String str2 = s.nextLine(); //用于回收Enter

   String str3 = s.nextLine();

END

【JAVA】Scanner.next()与Scanner.nextLine()的区别

标签:https   str   article   没有   ext   super   解决方法   为什么   details   

原文地址:https://www.cnblogs.com/anliux/p/12496849.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!