如何在异常后继续循环do

Sha*_*Lid 2 java

程序读取异常后停止.

需要一些帮助,如何使它继续循环的开始.

我尝试了继续声明,但它不起作用或者我的错误.

package labexer5a;
import java.util.*;

public class LabExer5A {

    public static void main(String[] args) {
        int max = 50;
        int min = 1;

        int secretNumber;
        secretNumber = (int)(Math.random() * 49 + 1);

        Scanner keyboard = new Scanner(System.in);
        int guess;
        int count = 0;
        try{
            do{
                System.out.println("Guess a number from 1 to 50");
                guess = keyboard.nextInt();
                count ++;

                if(guess == secretNumber){
                    if(count> 1){
                    System.out.println("You got it in " + count + " attempt(s)");
                    }
                    else{
                        System.out.println("You got it in " + count + " attempt");
                    }
                }
                else if(guess > max){
                    System.out.println("Out of Range");
                }
                else if(guess < min){
                    System.out.println("Out of Range");
                }
                else if(guess > secretNumber){
                    System.out.println("Too High. Try Again");
                }
                else if(guess < secretNumber){
                    System.out.println("Too Low. Try Again");
                }                
            }
            while(guess != secretNumber);
        }

        catch(InputMismatchException e){           
            System.out.println("Invalid Input");            
        }    
    }    
}
Run Code Online (Sandbox Code Playgroud)

Joa*_*son 9

将try/catch移动到循环内,并将其放在引发异常的特定代码周围.

do{
    System.out.println("Guess a number from 1 to 50");
    try {
        guess = keyboard.nextInt();
    } catch (InputMismatchException e){
        System.out.println("Invalid Input");
        keyboard.readLine();
        continue;
    }
    count ++;
    // rest of code
while(guess != secretNumber); 
Run Code Online (Sandbox Code Playgroud)

count当你得到异常时,我不确定你想要处理什么,如果你想计算每次尝试,即使是不正确的,然后count++在你从扫描仪读取之前移动.