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

使用InputMismatchException尝试/ catch创建无限循环

使用InputMismatchException尝试/ catch创建无限循环

慕码人2483693 2019-07-27 11:13:38
使用InputMismatchException尝试/ catch创建无限循环所以我正在构建一个从用户输入中获取内容的程序。我有一个看起来非常简单的try / catch块,如果用户没有输入int,则应该重复该块直到它们为止。这是代码的相关部分:import java.util.InputMismatchException;import java.util.Scanner;public class Except {     public static void main(String[] args) {         Scanner input = new Scanner(System.in);         boolean bError = true;         int n1 = 0, n2 = 0, nQuotient = 0;         do {             try {                 System.out.println("Enter first num: ");                 n1 = input.nextInt();                 System.out.println("Enter second num: ");                 n2 = input.nextInt();                 nQuotient = n1/n2;                 bError = false;             }              catch (Exception e) {                 System.out.println("Error!");             }         } while (bError);         System.out.printf("%d/%d = %d",n1,n2, nQuotient);     }}如果我为第二个整数输入0,那么try / catch就会完全按照预期进行操作,并让我再次将其放入。但是,如果我有一个InputMismatchException,比如为其中一个数字输入5.5,它只是在无限循环中显示我的错误信息。为什么会发生这种情况,我该怎么办呢?(顺便说一句,我已经尝试显式输入InputMismatchException作为catch的参数,但它没有解决问题。
查看完整描述

3 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

你也可以试试以下

   do {
        try {
            System.out.println("Enter first num: ");
            n1 = Integer.parseInt(input.next());

            System.out.println("Enter second num: ");
            n2 = Integer.parseInt(input.next());

            nQuotient = n1/n2;

            bError = false;
        } 
        catch (Exception e) {
            System.out.println("Error!");
            input.reset();
        }
    } while (bError);


查看完整回答
反对 回复 2019-07-27
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

要关注debobroto das的答案,你也可以放下

input.reset();input.next();

我有同样的问题,当我尝试这个。它完全修复了它。


查看完整回答
反对 回复 2019-07-27
  • 3 回答
  • 0 关注
  • 589 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号