递归调用

时间:2017-07-05 16:31:02

标签: java

在我的一个方法中,我正在编写一个try catch来验证用户的输入。如果用户输入了错误的数据类型,则再次调用该方法,并提示他们重新输入。出于某种原因,无论输入的值是什么,第二次调用该方法时,它总是返回0.

public static int enterNumGadgets(){   

    int numOfGadgetsIn = 0;

    try{
        System.out.println("");
        System.out.println("Please enter the number of items you wish to insure.");
        numOfGadgetsIn = EasyScanner.nextInt();
    }
    catch(InputMismatchException exception){

        System.out.println("You must enter a number.");
        EasyScanner.nextLine(); //consume new line left over
        enterNumGadgets(); //call the method again

    }
    return numOfGadgetsIn;
}

第一次调用方法时输出的数据类型正确:

姓名:测试

参考编号:te123s

小工具数量:1

最贵的物品:1.0

第一次调用时输出的数据类型不正确,但第二次调用的数据类型正确:

姓名:测试

参考编号:te123s

小工具数量:0

最贵的物品:1.0

注意在第二次调用enterNumGadgets()后似乎忽略了新值int numOfGadgetsIn设置为try {...}并将其返回为0。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

在第二次rekursiv调用(用户数据有效)后,您的数据不会分配给新变量。而是使用第一次调用的变量(用户数据无效),它仍为0.

这应该有效:

HEALTHCHECK

}