使用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被创建后,最好录入同一种数据类型,不然可能会出现以上异常.  (若只录入两次,第一次录入字符串,第二次录入数字也可以)
原创粉丝点击