问题1:为什么输入字母还是回报异常;

问题1:为什么输入字母还是回报异常;

问题二:去掉catch块的x=sc.nextInt();后,输入字母一直循环执行输出语句

public class Test {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int x=0;

while (true) {

System.out.println("输入数字");

try {

x=sc.nextInt();

} catch (Exception e) {

// TODO Auto-generated catch block

System.out.println("输入有误,重新输入");

x=sc.nextInt();

continue;

}

}

}

}



正在回答

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

1回答

你好,如下图所示,应该使用next方法,来接收字母,因为nextInt方法是用来接收整型的数据,所以会报错,修订之后的代码如下,祝学习愉快~

 http://img1.sycdn.imooc.com//climg/5c1c7c5a00017acf05410185.jpg

  • 0_菇凉将我作甚_0 提问者 #1
    麻烦老师讲下这块的逻辑,try块要输入整数,输入字符串后进入catch块,这个时候不是还要在输入一次吗,怎么就报错了?
    2018-12-21 17:15:09
  • chrismorgen 回复 提问者 0_菇凉将我作甚_0 #2
    你好同学,是这样的逻辑:nextInt方法只能接受整型的变量,如果你输入字符串就会发生异常,通常的解决办法是将在catch块中用可以接收字符串类型的方法来接收一下错误的变量,这样就不会报错了。如果你还是用接收nextInt来接收,就会出现你描述的那种情况了。祝学习愉快~
    2018-12-21 18:55:34
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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