try catch问题

try catch问题

int input=0;

int[] a =null;

int n = 0, k = 0;// 插入的数据及插入的位置

while (true) {

dm.notice();

System.out.println("请输入对应的数字进行操作:");

try {

input = sc.nextInt();

} catch (InputMismatchException e) {

System.out.println("输入的数据格式有误,不能有非数字!");

}

if (input == 0) {

System.out.println("退出程序!");

break;

}

为什么没有try    catch语句时,input语句未赋初始值,下面的if (input == 0) 不会报错,而有了try    catch语句时input语句未赋初始值,下面的if (input == 0) 就会报错

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

sc.nextInt()是非检查异常(运行时异常),编译时不检查。当你出现异常时,程序就报异常了,因而不会继续往下走,不会出现没赋初始值就使用的情况

而你主动去捕获异常,try到后进入catch语句接着往后执行,这样就会出现未被赋初始值就使用的情况。


苍星乱舞 2020-05-06 23:31:56

因为认为你可能因为异常而导致input未被初始化

  • 提问者 慕沐1462760 #1
    没有try catch 语句不是也有可能有异常情况,导致input未被初始化吗?
    2020-05-06 23:35:42
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师