探讨java中Scanner类nextInt之后用nextLine无法读取输入
来源:互联网 发布:中国象棋手机版软件 编辑:程序博客网 时间:2024/06/16 13:03
就像这个样子,先用nextInt()再用nextLine()就会出现不会有接收字符串的结果。
究其原因,首先,Scanner作为一个扫描器,它扫描数据都是去内存中一块缓冲区中进行扫描并读入数据的,而我们在控制台中输入的数据也都是被先存入缓冲区中等待扫描器的扫描读取。这个扫描器在扫描过程中判断停止的依据就是“空白符”,空格啊,回车啊什么的都算做是空白符。
其次,nextInt()方法在扫描到空白符的时候会将前面的数据读取走,但会丢下空白符“\r”在缓冲区中,而接下来,nextLine()方法自动读取了被nextInt()丢下来的”\r”作为他的结束符,其实nextLine()方法是执行过的,并不是没有执行。
那么该如何解决这个问题呢?一般有三种方法:
1.可以在nextInt()方法后面多加一句nextLine()方法专门用来取出缓冲区中留下的空白符;
2.可以只用nextLine()方法,然后通过Integer类中的parseInt()方法解析成int数据。因为nextLine()方法会自动清理掉后边的空白符,这种方法就不会产生最开始那种错误了;
3.将nextLine()换成next(),因为next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。但是next()方法不能得到带空格的字符串。
而nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。
- 探讨java中Scanner类nextInt之后用nextLine无法读取输入
- java中Scanner类nextInt之后用nextLine无法读取输入
- java中Scanner类nextInt之后用nextLine无法读取输入
- java中Scanner类nextInt之后用nextLine无法读取输入
- java Scanner读取输入 nextInt
- Java Scanner类nextLine和nextInt不能同用问题
- java scanner中nextInt 和nextLine的注意事项
- Java中Scanner的nextInt(),next(),nextLine()方法总结
- java中scanner.nextint和nextline的问题
- Java中Scanner的nextInt(),next(),nextLine()方法总结
- Java中Scanner的nextInt(),next(),nextLine()方法总结
- java Scanner类中nextLine()方法与nextInt()等联用时
- java scanner next nextline nextint区别
- Java中nextInt()后接nextLine()读取不到数据
- 以OJ2024C语言合法标识符介绍java中Scanner类中nextLine()方法与next()或nextInt()
- 关于scanner输入的说明,nextLine、nextInt、next的使用说明、类数组定义的说明
- 小心:Scanner中关于next()、nextInt()和nextLine()的问题
- Java控制台输入Scanner中next和nextLine的区别
- 文章标题 listview网络请求数据展示
- 菱形
- 2017-11-7每日一练
- JAVA运算符
- 10044---一个web项目web.xml的配置中<context-param>配置作用
- 探讨java中Scanner类nextInt之后用nextLine无法读取输入
- 图解ocata中的cell功能
- TCP/IP协议学习一
- 学习心得
- Faster R-CNN论文翻译
- IO17.11.7
- 图像配准方法(一)
- 感悟..
- golang基础-goroutine初识、chan存取、goroutine和chan相结合、关闭chan、range取、单元测试