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

该博客讨论了一个Java模拟借书系统中遇到的问题。当用户输入非整数时,程序会陷入死循环,只执行catch块而无法跳出。博主寻求解决如何在捕获InputMismatchException异常后正确处理用户输入,以避免程序陷入无限循环的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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-按照序号查找图书

求高手解答

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值