public int selectServer(){
int choose=0;
try{
choose = input.nextInt();
if(choose<1||choose>6)
throw new Exception();
return choose;
} catch (InputMismatchException e){
System.out.println("输入格式不正确,请重新正确数字:");
input.nextLine();
selectServer();
} catch (Exception e) {
System.out.println("请输入正确数字(1~6):");
input.nextLine();
selectServer();
}
return choose;
}
第一次输入错误抛出异常之后,重新输入正确的数但是返回值不正确
public static void selectServer(){
int choose=0;
input = new Scanner(System.in);
try{
choose = input.nextInt();
if(choose<1||choose>6){
throw new Exception();
}
System.out.println("final =" + choose);
} catch (InputMismatchException e){
System.out.println("输入格式不正确,请重新正确数字:");
input.nextLine();
selectServer();
} catch (Exception e) {
System.out.println("请输入正确数字(1~6):");
input.nextLine();
selectServer();
}
具体参考线的代码
public static void selectServer(){ int choose=0; input = new Scanner(System.in); try{ choose = input.nextInt(); if(choose<1||choose>6){ throw new Exception(); } System.out.println("final =" + choose); } catch (InputMismatchException e){ System.out.println("输入格式不正确,请重新正确数字:"); input.nextLine(); selectServer(); } catch (Exception e) { System.out.println("请输入正确数字(1~6):"); input.nextLine(); selectServer(); } }
因为你输入错误数据的时候,直接去selectServer(),没有 结束当前的线程,后面还有return choose,所有你第一次输入的数据会在第二次打印出来
这个函数,你每次出错之后,都输入一个数字,然后在重新执行selectServer(),又把choose置0 ,所以,,,,,你可以把那句话去掉试试
ps:新手,懂得不多。
666