为了账号安全,请及时绑定邮箱和手机立即绑定

老师,在catch语句中为什么又创建一个console = new Scanner(System.in);?

private static int inputCommand(){

int command;

try {

command = console.nextInt();

return command;

} catch (Exception e) {

console = new Scanner(System.in);

return -1;

}

}

老师,在catch语句中为什么又创建一个console = new Scanner(System.in);?

正在回答

4 回答

这个是,当程序出现异常的时候,将异常捕获后,会继续执行,而不至于出现异常之后,就让程序死掉了

4 回复 有任何疑惑可以回复我~
#1

weibo_这都很重要_0 提问者

非常感谢!
2015-02-26 回复 有任何疑惑可以回复我~

为甚要好给控制台编程一个输入常量啊

private static Scanner console = new Scanner(System.in);

0 回复 有任何疑惑可以回复我~

从scanner的原理说了,scanner在要求用户输入的时候,其实是在内存中占用一段内存用于用户输入,你这里,这段内存能存储int类型的数据,而其他类型的就会抛出异常,然而,我们用console.nextInt()调用没把该段内存中的东西提出来,输入字符时,因为现在存入的是字符,提取不出来,他就会一直占用这段内存,导致我们二次输入时,就不会再要求用户输入了,他会继续试图调用该段内存数值,也就一直报错,所有这个new是必须的,不然下次无法输入,这是比较本质的

9 回复 有任何疑惑可以回复我~
#1

詹士

说得很详细,谢谢你!
2015-09-15 回复 有任何疑惑可以回复我~
#2

yitongxiaozhu

解释的真的是太好了
2016-08-01 回复 有任何疑惑可以回复我~
#3

我要变大神大神大大神

详细~
2016-10-09 回复 有任何疑惑可以回复我~
#4

慕粉3467393

详细 抱拳
2017-07-24 回复 有任何疑惑可以回复我~
#5

慕少8143980

对~~
2017-08-07 回复 有任何疑惑可以回复我~
查看2条回复

不懂。。就算为了继续执行干嘛还要重新定义输入,还是console=input.nextInt()不行么

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

老师,在catch语句中为什么又创建一个console = new Scanner(System.in);?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信