Как сделать исключение по пределам вектора?

Добрый вечер. Я выполняю задачу и сталкиваюсь с ошибками во время выполнения, когда я превышаю предел вектора. Я исследовал и обнаружил, что могу решить это с помощью try-catch, но в моем коде это не работает так, как должно.

   try {
            System.out.print("Ingresar la coordenada horizontal (1-5): ");
            x = entrada.nextInt();

            System.out.print("Ingresar la coordenada vertical (1-10): ");
            y = entrada.nextInt();

        } catch (Exception e) {
            System.out.println("No está dentro del rango");
        }

Несмотря на то, что try-catch размещен, он все равно показывает мне ошибку

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5

Я пробовал этот способ, как мне удалось найти, но он все еще показывает мне ту же ошибку выполнения.

  try {
            System.out.print("Ingresar la coordenada horizontal (1-5): ");
            x = entrada.nextInt();

            System.out.print("Ingresar la coordenada vertical (1-10): ");
            y = entrada.nextInt();

        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("No está dentro del rango");
        }

Любые предложения по решению этой проблемы в пределах вектора. Заранее спасибо.

0
задан 03.09.2016, 06:56
3 ответа

Не, где ты поместил ее asignaciГіn с переменных до вектора, но они, должно быть, идут внутри блока try, возможно поэтому не разбивай ее excepciГіn

 try {
            System.out.print("Ingresar la coordenada horizontal (1-5): ");
            x = entrada.nextInt();

            System.out.print("Ingresar la coordenada vertical (1-10): ");
            y = entrada.nextInt();
            //asignacion de las variables x & y al vector 


        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("No está dentro del rango");
        }
0
ответ дан 24.11.2019, 13:30
  • 1
    Спасибо за ответ, но оно я не функционировало, adem и # 225; s, которого (x, y) я использую их глобально. – angel_elias 03.09.2016, 07:29
  • 2
    помести часть кода, где ты распределяешь данные в вектор, чтобы видеть, можем ли мы помогать тебе яснее – oscar_sls 03.09.2016, 07:32

Ты должен реализовывать ассигнование внутри блока try. Так, если переменные 'x' и 'и' они превосходят пределы вектора, блок catch поймает исключение.

try {
    System.out.print("Ingresar la coordenada horizontal (1-5): ");
    x = entrada.nextInt();

    System.out.print("Ingresar la coordenada vertical (1-10): ");
    y = entrada.nextInt();

    vector[x][y] = 5; // Asignamos valor dentro del bloque try.

}
catch (ArrayIndexOutOfBoundsException e) {
    System.out.println("No está dentro del rango");
}

Понимая, просвет, что array/vector двухмерный (ввиду того, что ты просишь две координаты), и он целого типа.

0
ответ дан 24.11.2019, 13:30

Я не функционировал очень хорошо код, потому что он не ловил ни в каком месте exception. Метод, где он создавал ошибку, - часть одной вступите в брак следовательно он не знал, где была бы ошибка. Сейчас я поместил try-catch в case, где находится мой метод.

     switch (opcion) {
            case 1:
                    System.out.println("\n*************************************");
                System.out.print(nombre + " ha seleccionado el nivel **PRIMERO**");


                try{
                    Jugar();
                }catch(Exception e){
                    System.out.println("Ingreso fuera de los límites...");
                }


                break;

Потом в секции, где ожидается делать Exception:

   public void Jugar() {

    LlenarFacil();


        System.out.print("Ingresar la coordenada horizontal (1-15): ");

        x = entrada.nextInt();

        while(x > 15){
            System.out.print("NO puede ser mayor a 15, ingrese de nuevo: ");
            x = entrada.nextInt();
        }

Ésto будет работать так часто до тех пор, пока пользователь не введет правильный ранг в компьютер.

0
ответ дан 24.11.2019, 13:30

Теги

Похожие вопросы