老师,我这样处理异常不知道对不对?

老师,我这样处理异常不知道对不对?

	public void update(float[] f,int index,float newScore) {
		Scanner sc = new Scanner(System.in);	
		System.out.println("请输入要修改数据的位置(从0开始)");
		try {
		index = sc.nextInt();
		}catch(InputMismatchException e) {
			System.out.println("输入的数据格式有误,不能有非数字");
			sc.next();
			System.out.println("请输入要修改数据的位置(从0开始)");
			index = sc.nextInt();
		}
		System.out.println("请输入新数据");
		try {
		 newScore = sc.nextFloat();
		}catch(InputMismatchException e) {
			System.out.println("输入的数据格式有误,不能有非数字");
			sc.next();
			System.out.println("请输入新数据");
			newScore = sc.nextFloat();
		}
		f[index]=newScore;
		
		
	}
	
	
	

如果不对,请问正确的应该怎么写?

正在回答

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

2回答

同学你好,如图所示:

1、处理异常时,可以在设置while循环,当输入成功时跳出循环,当输入失败时,给出提示,使用sc.next()接收错误信息,并使用contienue退出当前循环,继续执行下次循环。

2、"请输入要修改数据的位置(从0开始)"和“请输入新数据”的提示,以及从键盘接收数据,在try块中已经定义过,在catch中无需重复定义。

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

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 慕移动ttong 提问者 #1
    知道了,但是我记得老师,好像没有加break,不加可以吗?
    2019-06-11 10:33:05
吃吃吃鱼的猫 2019-06-11 11:37:00

同学你好,必须要加break哦~

不然会一直循环,造成死循环呢。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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