Как вернуться / Вернуться в цикл после ловли исключительного - PullRequest
0 голосов
/ 07 мая 2019

У меня есть этот код, который вычисляет экспоненциальный пример 3⁴ = 81.0, и коды спрашивают пользователя о том, сколько чисел и экспонент он хочет ввести, и когда пользователь вводит числа и экспоненты, и он вводит недопустимый ввод буквой, код будетпоймайте исключение java.util.InputMismatchException и остановитесь.Есть ли какие-нибудь коды, которые могут вернуться к введенным числам и показателю степени для повторного ввода?

Я пробовал булеву вещь, но она не работает, и я ищу эту вещь, но никто не работает.

    try {
        String[] unicode = {"\u2070", "\u00b9", "\u00b2", "\u00b3", "\u2074", "\u2075", "\u2076", "\u2077", "\u2078", "\u2079"};

        System.out.print("Enter how many Numbers and Exponent you want to enter: ");
        int userNum = new Scanner(System.in).nextInt();
        ArrayList<Integer> num = new ArrayList<>();
        ArrayList<Integer> nums = new ArrayList<>();
        for (int i = 0; i < userNum; i++) {
            System.out.print("Enter a Number: ");
            int userNumber = new Scanner(System.in).nextInt();
            num.add(userNumber);
            System.out.print("Enter the exponent: ");
            int userExponent = new Scanner(System.in).nextInt();
            nums.add(userExponent);
        }
        for (int i = 0; i < userNum; i++) {
            double answer = num.get(i);
            for (int x = 0; x < nums.get(i) - 1; x++) {
                answer *= num.get(i);
            }
            System.out.print(num.get(i));
            for (int x = 0; x < String.valueOf(nums.get(i)).length(); x++) {
                char g = String.valueOf(nums.get(i)).charAt(x);
                String h = String.valueOf(g);
                System.out.print(unicode[Integer.parseInt(h)]);
            }
            System.out.println(" = " + answer);
        }
    } catch (InputMismatchException exception) {
        System.out.println(exception+" Invalid Input. Numbers Only.");
    }
}

Я ожидаю, что когда пользователь введет неверный ввод, программа поймает java.util.InputMismatchException и распечатает его и вернется к вводу для повторного ввода

Пример.

Введите номер: 12

Введите экспоненту: asd

java.util.InputMismatchException

Введите экспоненту: 123

1 Ответ

1 голос
/ 07 мая 2019

Вы должны создать несколько методов проверки, которые будут возвращать boolean, что означает, что проверка прошла успешно.Чем вы можете использовать цикл do while для запроса ввода еще раз в случае ValidationError.Примерно так:

do {    
      System.out.print("Enter a Number: ");
      String userInput = new Scanner(System.in).next();
  } while (!validate(userInput));

num.add(Integer.parseInt(userInput));

Вы также можете использовать метод Scanner.hasNextInt(), прежде чем пытаться прочитать int, если единственным ограничением является наличие действительного номера int.

...