问答详情
源自:8-1 什么是类和对象

异常问题,求帮忙

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;

}

第一次输入错误抛出异常之后,重新输入正确的数但是返回值不正确

提问者:王明晓 2016-08-04 23:10

个回答

  • 程序猿天璇
    2016-10-05 16:06:00

    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();
    }

  • 小强死了吗
    2016-08-16 20:42:10

    具体参考线的代码

    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();
    }
    
    }


  • 小强死了吗
    2016-08-05 10:06:20

    因为你输入错误数据的时候,直接去selectServer(),没有 结束当前的线程,后面还有return choose,所有你第一次输入的数据会在第二次打印出来

  • Start_出发
    2016-08-05 09:53:13

    这个函数,你每次出错之后,都输入一个数字,然后在重新执行selectServer(),又把choose置0 ,所以,,,,,你可以把那句话去掉试试

    ps:新手,懂得不多。

  • John_Skeet
    2016-08-05 09:52:18

    666