java中如何抛出异常后继续运行

题目:输入若干个整数,并求和,直到结束标志999为止。在输入过程中,自动忽略掉输入的非整数。代码:importjava.util.InputMismatchExcepti... 题目:输入若干个整数,并求和,直到结束标志999为止。在输入过程中,自动忽略掉输入的非整数。
代码:
import java.util.InputMismatchException;
import java.util.Scanner;
public class Sum {
static int i = 0;
static int s = 0;
static void sum() throws InputMismatchException {
Scanner sc = new Scanner(System.in);
for(;;){
if(sc.hasNextInt()){//如果输入流取到整数,则累加
int i=sc.nextInt();
if(i==999)//999为循环结束标志
break;
else
s+=i;
}
else//输入流取得非整数,则抛出异常
throw new InputMismatchException();// 如果不为整数,则抛出不匹配异常
}
sc.close();
System.out.println(s);
}

public static void main(String[] args) {
try {
sum();
} catch (InputMismatchException e) {
//i = 0;// 不匹配异常的处理,累加时忽略非整数
//System.out.println("输入了非整数");
} catch (Exception e) {
System.out.println("程序出现了其它异常");
}
}
}
展开
 我来答
百度网友a4c4128c
2015-02-27
知道答主
回答量:2
采纳率:0%
帮助的人:1912
展开全部
出现InputMismatch后一直循环:
当某一扫描器抛出 InputMismatchException 时,该扫描器不会传递导致该异常的标记,因此可以通过其他某种方法来获取或跳过它。
这是java API文档中的原话。意思是说,如果nextInt方法没有成功解析出一个整数,那么你的输入不会被忽略。因为它或许能被其它格式解析。
那么你的程序中输入了a后,出现异常,number被赋值100,开始下一次循环,但这时数据缓冲区内你上次输入的a还在,并没有清除,这时继续解析a,还是错误,于是这个过程就一直重复下去了。
现在你要改的是,出现错误把这次的输入清除,只要在catch中,加一句:input.next()就搞定了!
也可以将Scanner写在try里面
一个鸭梨呐
2019-12-11
知道答主
回答量:12
采纳率:0%
帮助的人:1.8万
展开全部

结合前面的回答,我写了一下。sc.next()这句很重要,要不然会一直读那个错误的输入。

  //求输入的所有整数的和,当输入999时终止输入,并输出求和
  Scanner sc = new Scanner(System.in);
  //记录每一个整数的值
  int item = 0;
  //记录最后的求和
  int sum = 0;
  while(true) {
   try {
    item = sc.nextInt();
    if(item == 999) {
     break;
    }
   } catch(InputMismatchException e) {
    System.out.println("注意输入整数,请重新输入");
    //下面这句很重要。如果没有这句,缓冲区里一直会读错误的那个值,并且一直输出 上面所写的"注意输入整数,请重新输入"
    sc.next();
    continue;
   }
   sum += item;
  }
  
  System.out.println("sum:"+sum);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
longxinwu888
推荐于2017-09-04 · TA获得超过134个赞
知道小有建树答主
回答量:171
采纳率:100%
帮助的人:101万
展开全部
抛出异常后程序就中断了,不能继续执行,可以在try{}catch(Exception e){}finally{
执行业务逻辑}。只有这种在finally中谢代码 才可以把异常屏蔽掉
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天虹2010
2013-11-16 · TA获得超过164个赞
知道小有建树答主
回答量:284
采纳率:100%
帮助的人:133万
展开全部
java的异常处理机制,try···catch···finaly,继续运行的写在finaly里就好了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
米菲非58
2013-11-16 · TA获得超过162个赞
知道答主
回答量:125
采纳率:0%
帮助的人:56.4万
展开全部
将想要在异常抛出之后还要运行的代码部分放到finally{}里面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式