使用Scanner时的一个注意事项
来源:互联网 发布:龙腾世纪2 知乎 编辑:程序博客网 时间:2024/06/06 00:47
作为Java初学者,遇到使用Scanner时的一个问题,整理一下
public class ErrorRecord {public static void main(String[] args) {Scanner sc = new Scanner(System.in);for (int i = 0; i < 3; i++) {//Scanner sc = new Scanner(System.in); //写在这里异常会消失System.out.println("请输入字符串:");String s = sc.nextLine();System.out.println("请输入一个数");int a = sc.nextInt();System.out.println(a);}}}
出现错误的地方及解释:
当 Scanner sc = new Scanner(System.in);写在for 循环外面的时候,第一次录入的字符串,用String类型接收,第二次录入一个int类型的数,用int类型接收,
前后两次录入的数据类型不一样,所以会出现异常.因为第一次循环结束录入的是一个数字,第二次循环开始时录入的是字符串,这时就会出现问题(没办法输入字符串了),原因是你在
输入数字之后有一个换行的动作(换行符默认被当做字符串录入). 要想解决这个问题,需要在录入数字之后再创建一个新的键盘录入对象.
若Scanner对象放在for循环里面,第一次循环结束后,下次循环开始就又创建了一个新的键盘录入对象,异常就会消失.
(即使不在循环里面,键盘录入一个数字之后,再录入一个字符串,也会出现不能录入的问题,原因和上面相同,解决方法也是在录入数字之后再重新创建一个键盘录入对象)
结论:键盘录入对象scanner被创建后,最好录入同一种数据类型,不然可能会出现以上异常. (若只录入两次,第一次录入字符串,第二次录入数字也可以)
当 Scanner sc = new Scanner(System.in);写在for 循环外面的时候,第一次录入的字符串,用String类型接收,第二次录入一个int类型的数,用int类型接收,
前后两次录入的数据类型不一样,所以会出现异常.因为第一次循环结束录入的是一个数字,第二次循环开始时录入的是字符串,这时就会出现问题(没办法输入字符串了),原因是你在
输入数字之后有一个换行的动作(换行符默认被当做字符串录入). 要想解决这个问题,需要在录入数字之后再创建一个新的键盘录入对象.
若Scanner对象放在for循环里面,第一次循环结束后,下次循环开始就又创建了一个新的键盘录入对象,异常就会消失.
(即使不在循环里面,键盘录入一个数字之后,再录入一个字符串,也会出现不能录入的问题,原因和上面相同,解决方法也是在录入数字之后再重新创建一个键盘录入对象)
结论:键盘录入对象scanner被创建后,最好录入同一种数据类型,不然可能会出现以上异常. (若只录入两次,第一次录入字符串,第二次录入数字也可以)
阅读全文
0 0
- 使用Scanner时的一个注意事项
- Java中Scanner的使用注意事项
- Hadoop使用ByteWritable时的一个注意事项
- ExtJS使用时的一个注意事项
- Scanner的使用
- Scanner类的使用
- Scanner的使用
- Scanner()类的使用
- Scanner类的使用
- 对Scanner的使用
- java Scanner类的几点注意事项
- 关于 类 Scanner扫描文件的注意事项
- mysql 使用in()函数时的一个注意事项
- JAVA Scanner 用法注意事项(scanner 使用错误:Exception in thread "main" java.util.NoSuchElementExceptionation )
- java scanner类的使用
- BufferReader和Scanner的使用
- 1103 Java-Scanner的使用
- Scanner对象的使用问题
- windows下尝试graphx的一个例子
- bzoj 4818 [Sdoi2017]序列计数(简单容斥+快速幂加速dp)
- 全面了解equals与==的区别
- Python的绝对路径和相对路径
- 【BZOJ1084】最大子矩阵(动态规划)
- 使用Scanner时的一个注意事项
- 将全志R16平台上的MIPI屏迁移到全志R40平台上(草稿)
- Python的Socket
- 拉格朗日乘子法、KKT条件、线性规划对偶理论
- JAVA内存分配分析/栈内存、堆内存
- [OS] Shell脚本
- Linux下设置环境变量
- LVM原理及PV、VG、LV、PE、LE关系图
- bzoj1567[JSOI2008]Blue Mary的战役地图 二分+矩阵hash