0

这是我的主要方法

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

4

1 回答 1

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循环结束而不执行包含在其中的其余代码。
于 2013-06-03T17:35:35.850 回答