while(true){
try{
id1=input.nextInt();
}catch(Exception e){
System.out.println("请输入整数型数字");
continue;
}
break;
}
这几天没看java啦,说实话,我对java也只是一个爱好者
给你看一个之前写的
/**
* 判断输入玩家编号异常值
* @return
* @throws Exception
*/
public int scanInt() throws Exception
{
try {
int in = console.nextInt();
return in;
} catch (Exception e) {
console = new Scanner(System.in,"UTF-8");
throw new Exception("输入异常,请输入整数类型的ID");
}
}
楼上说的对,你只要改一行就好了
id1=Integer.parseInt(input.nextLine());
你定义了一个Scanner对象 input吧 如果你已经赋值给他并且非int变量
循环再运行input.nextInt()方法就不再接收键盘输入 而是直接返回上一次有异常的值,然后继续异常 会无限循环catch块的代码的
简单说解决方案 可以try内部再新new一个Scanner对象
或者使用楼上的throw
http://www.imooc.com/qadetail/199049
continue是用来继续循环啊,break是跳出循环,如果用return的话后面程序就都不用执行了。
这个问题你断点调试一下就会发现,当输入不是整形,触发异常的时候,continue一直都在循环中,
改成throw new Exception("输入异常,请输入整数类型数字");就好啦