尝试/捕捉,不知道如何循环这个

时间:2013-06-03 17:24:24

标签: exception try-catch

这是我的主要方法

public static void main (String[] args) {
    Scanner console = new Scanner(System.in);
    Intro();
    try {
        userInput(console);
    } catch (InputMismatchException e) {
        System.out.println("Not a number; try again.");
    }
}

我想要userInput(控制台);即使发现异常,也要再次运行。方法userInput(console);运行一个程序,询问圆的半径并计算其直径,周长和面积。我尝试在try / catch语句之外使用while循环,但我不知道应该使用什么作为条件。如果您想要查看userInput(控制台)方法,请注释,我也会发布它。

1 个答案:

答案 0 :(得分:1)

使用带有条件while循环是可以的。请记住,条件用作定义迭代是否继续或停止的标志,特别是因为满足某些条件。在这种情况下,您的条件由用户的输入验证结果定义。假设你使用了这样的时间:

while(someCondition) {
    try {
        userInput(console);
    } catch (InputMismatchException e) {
        System.out.println("Not a number; try again.");
    }
}

您的someCondition变量应该是在boolean中初始化的true,当输入有效时设置为false,或者在您的情况下,当没有抛出异常时。如果迭代,您也可以在一定数量后将其设置为false。如果您将someCondition设置为false,则下次while评估someCondition时它为false,并且迭代结束。

另一种方法是使用while(true)循环并使用break语句结束迭代。在这种情况下它实现了相同的效果,但它们本质上是不同的:

  • someCondition方法不会削减当前迭代,它会让它完成处理(例如,考虑到循环中必须使用有效输入完成某些操作)。
  • 通过使用break语句,该迭代被中断,while循环结束,而不执行其中包含的其余代码。