while循环中的try-catch方法?

时间:2012-03-20 04:31:22

标签: java while-loop try-catch

我有这个代码,我想把try-catch放在while循环中。逻辑是,“当存在输入错误时,程序将继续要求正确的输入”。我该怎么做?提前谢谢。

public class Random1 {

  public static void main(String[] args) {

    int g;

    Scanner input = new Scanner(System.in);
    Random r = new Random();
    int a = r.nextInt(10) + 1;


    try {
        System.out.print("Enter your guess: ");
        g = input.nextInt();
        if (g == a) {

            System.out.println("**************");
            System.out.println("*  YOU WON!  *");
            System.out.println("**************");
            System.out.println("Thank you for playing!");

        } else if (g != a) {
            System.out.println("Sorry, better luck next time!");
        }
    } catch (InputMismatchException e) {
        System.err.println("Not a valid input. Error :" + e.getMessage());
    }


}

5 个答案:

答案 0 :(得分:2)

boolean gotCorrect = false;
while(!gotCorrect){
  try{
    //your logic
    gotCorrect = true;
  }catch(Exception e){
     continue;
  }

}

答案 1 :(得分:2)

我在这里使用了中断继续关键字。

while(true) {
    try {
        System.out.print("Enter your guess: ");
        g = input.nextInt();
        if (g == a) {

            System.out.println("**************");
            System.out.println("*  YOU WON!  *");
            System.out.println("**************");
            System.out.println("Thank you for playing!");

        } else if (g != a) {
            System.out.println("Sorry, better luck next time!");
        }
        break;
    } catch (InputMismatchException e) {
        System.err.println("Not a valid input. Error :" + e.getMessage());
        continue;
    }
}

答案 2 :(得分:1)

您可以在break;块中添加try作为最后一行。这样,如果抛出任何execption,控件将跳过break并移动到catch块。但是如果没有抛出异常,程序将运行到break语句,该语句将退出while循环。

如果这是唯一的条件,那么循环应该看起来像while(true) { ... }

答案 3 :(得分:0)

你可以只有一个布尔标志,你可以适当地翻转。

下面的伪代码

bool promptUser = true;
while(promptUser)
{
    try
    {
        //Prompt user
        //if valid set promptUser = false;
    }
    catch
    {
        //Do nothing, the loop will re-occur since promptUser is still true
    }
}

答案 4 :(得分:0)

在你的catch块中写'continue;':)