猿问

java入门,请各位大神帮忙看看一个问题!

//想把异常处理加入到"租车系统"的代码中,但是用到的一个break-label跳转却进入了死循环。百思不得其解,望大神解惑。
public static void main(String[] args) {

  Scanner input=new Scanner(System.in);

  System.out.println("请问您是否要租车?");

  System.out.println("1、是          2、否");

  int confirm=input.nextInt();

  for(int i=1;i>0;i++){

      if(confirm==2) {

       System.out.println("答答租车系统已退出,感谢您的使用!");

       break;

      }else if(confirm==1) {

       reselect:     //设置标签。

       {

       try {

             System.out.println("请选择您要租赁的车辆类型:");

       System.out.println("1、汽车          2、货车          3、皮卡");

       int type=input.nextInt();

       for(int a=1;a>0;a++){

            if(type==1) {

            Car car=new Car();     //此处及以下调用的几个类代码均未贴出。

            car.getType();

            car.show();

            break;

            }else if(type==2) {

       Truck truck=new Truck();

       truck.getType();

       truck.show();

       break;

             }else if(type==3) {

        Pickup pickup=new Pickup();

        pickup.getBrand();

        pickup.show();

        break;

              }else {

            System.out.println("您的输入有误!请选择您要租赁的车辆类型:");

            System.out.println("1、汽车          2、货车          3、皮卡");

            type=input.nextInt();

            }

       }

       }catch(InputMismatchException ime) {

        break reselect;          //【就是这里】,此处break跳转后为什么会进入死循环?

       }

       for(int b=1;b>0;b++){

        System.out.println("确认吗?(是Y/否N)");

        String conFinal=input.next();

           if(conFinal.equals("Y")) {

            System.out.println("您已预订成功!");

            break;

            }else if(conFinal.equals("N")) {

             break reselect;     //此处break-label运行正常。

             }else{

              System.out.println("您的输入有误!");

              continue;

              }

         }

       break;

                }

      }else{

       System.out.println("您的输入有误!请问您是否要租车?");

       System.out.println("1、是          2、否");

       confirm=input.nextInt();

       }

     }

  input.close();

 }

 

qq_宫湦_03802224
浏览 1000回答 2
2回答

隔壁老伍丶

你try 中的代码一直会被catch InputMismatchException,然后一直重新跳转执行
随时随地看视频慕课网APP

相关分类

Java
我要回答