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

在while循环中的try-catch语句,输入类型不匹配后为何会陷入死循环?

标签:
Java
package 模拟借书系统;
import java.util.Scanner;
import java.util.InputMismatchException; 
public class rendBook {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
       String[] book={"语文","数学","英语","政治","历史","地理"};
       Scanner input=new Scanner(System.in);
       boolean x=true;
       do{
           System.out.println("请输入命令:1-按照名称查找图书;2-按照序号查找图书");
           try{
               int order=input.nextInt(); 
               if(order==1){
                   System.out.println("请输入图书名称:");
                   String s1=input.next();
                   System.out.println(s1);
                   for(int i=0;i<book.length;i++){
                       if(book[i].equals(s1)){
                           System.out.println("有这本书:"+book[i]);
                           break;
                       }    
                       if(i==book.length-1)
                           System.out.println("图书不存在!");
                   }

               }
               else{
                   System.out.println("请输入图书序号:");
                   int num=input.nextInt();
                   if(num>book.length){
                       System.out.println("图书不存在!");       
                   }
                   else{
                       System.out.println("有这本书:"+book[num-1]);
                   }
               }
             break;  
           }
           catch(InputMismatchException e){
            System.out.println("输入有误,请重新输入!");
           }   
       }while(x);

       }

}

运行情况:
请输入命令:1-按照名称查找图书;2-按照序号查找图书
输入:a //类型不匹配,抛出异常!
//就会陷入如下死循环,很明显再次循环时,程序只执行了catch语句,而没有执行try
输入有误,请重新输入!
请输入命令:1-按照名称查找图书;2-按照序号查找图书
输入有误,请重新输入!
请输入命令:1-按照名称查找图书;2-按照序号查找图书

求高手解答

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消