Обработка исключений при написании метода в классе стека [closed]

Я реализовал двухстороннюю очередь, используя массив под названием ArrayDeque. Затем я использовал этот ArrayDeque для реализации стека myStack. В классе стека я пишу метод, который может удалить верхние n элементов из стека за постоянное время, называемый remove (int n). Ниже приведены соответствующие фрагменты кода:

public Object removeFirst() throws EmptyDequeException{
    if(isEmpty())
      throw new EmptyDequeException("Cant remove from empty queue");

    Object ans= data[f];
    data[f]= (Object)null;
    f= (f+1)%data.length;
    sz--;
    return ans;
  }

Выше находится функция removeFirst () ArrayDeque, которая возвращает первый элемент двухсторонней очереди и генерирует исключение, когда двухсторонняя очередь пуста.

public void remove(int n) throws EmptyStackException  {
        while (n > 0) {
            try{
                myStack.removeFirst();
                n--;
                remove(n) ;
            }
            catch(EmptyDequeException e){
                throw new EmptyStackException();
            }

        }
    }

Это метод remove (n) класса Stack. Здесь я получаю сообщение об ошибке: Исключение в потоке «main» java.util.EmptyStackException в Stack.remove (Stack.java:48): где номер строки 48 — это выражение catch. Я думаю, что что-то не так с порядком моего блока try-catch и / или обработки исключений. Но я не могу понять, что это такое. Пожалуйста, направьте меня!

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *