Можно ли вызвать main (String [] args) после перехвата исключения? - PullRequest
1 голос
/ 03 мая 2010

Я работаю над программой треугольников Серпинского, которая запрашивает у пользователя уровни треугольников для рисования. В целях защиты моей программы от идиотов я вставил следующее:

Scanner input= new Scanner(System.in);
System.out.println(msg);
try {
    level= input.nextInt();
} catch (Exception e) {
    System.out.print(warning);
    //restart main method
}

Возможно ли, если пользователь нажал на букву или символ, перезапустить метод main после того, как исключение было перехвачено?

Ответы [ 3 ]

8 голосов
/ 03 мая 2010

Вы можете предотвратить выброс Scanner InputMismatchException, используя hasNextInt():

if (input.hasNextInt()) {
   level = input.nextInt();
   ...
}

Это часто забываемый факт: вы всегда можете предотвратить a Scanner от броска InputMismatchException на nextXXX(), предварительно убедившись в hasNextXXX().

Но чтобы ответить на ваш вопрос, да, вы можете вызвать main(String[]), как и любой другой метод.

Смотри также


Примечание : чтобы использовать hasNextXXX() в цикле, необходимо пропустить ввод «мусора», который заставляет его возвращать false. Вы можете сделать это, скажем, позвонив и сбросив nextLine().

    Scanner sc = new Scanner(System.in);
    while (!sc.hasNextInt()) {
        System.out.println("int, please!");
        sc.nextLine(); // discard!
    }
    int i = sc.nextInt(); // guaranteed not to throw InputMismatchException
3 голосов
/ 03 мая 2010

Ну, вы можете назвать это рекурсивно: main(args), но вам лучше использовать while цикл.

0 голосов
/ 03 мая 2010

Вы намного лучше хотите сделать это:

boolean loop = true;
Scanner input= new Scanner(System.in);
System.out.println(msg);
do{
    try {
        level= input.nextInt();
        loop = false;
    } catch (Exception e) {
        System.out.print(warning);
        //restart main method
        loop = true;
    }
while(loop);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...