//想把异常处理加入到"租车系统"的代码中,但是用到的一个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();
}
添加回答
举报
0/150
提交
取消