Почему моя реализация Java Stack выдает EmptyStackException, даже если стек не пуст? ⇐ JAVA

Программисты JAVA общаются здесь
Anonymous
Почему моя реализация Java Stack выдает EmptyStackException, даже если стек не пуст?

Сообщение Anonymous »

Ниже приведен профессионально структурированный шаблон вопроса о переполнении стека, который вы можете опубликовать.
Он соответствует лучшим практикам: четкое название, формулировка проблемы, ожидаемый и фактический результат, минимально воспроизводимый пример и сведения о среде.

📌 Заголовок
Почему моя реализация стека Java выдает исключение EmptyStackException, даже когда стек не пуст?

📄 Текст вопроса
Я реализую базовый стек, используя встроенный в Java класс Stack. Однако при вызове pop() я получаю исключение EmptyStackException, хотя считаю, что стек не пуст.
Вот мой минимальный воспроизводимый пример:

Код: Выделить всё

import java.util.Stack;

public class StackTest {
public static void main(String[] args) {
Stack stack = new Stack();

stack.push(10);
stack.push(20);
stack.push(30);

stack.clear(); // I recently added this line

System.out.println("Top element: " + stack.pop());
}
}
🔍 Ожидаемый результат:

Код: Выделить всё

Top element: 30
❌ Фактический результат:

Код: Выделить всё

Exception in thread "main" java.util.EmptyStackException
Мои вопросы:
  • Почему генерируется EmptyStackException, хотя элементы были отправлены ранее?
  • Есть ли лучший способ безопасной проверки перед вызовом pop()?
  • Должен ли я использовать Stack или есть более рекомендуемая альтернатива в современной Java?
🛠 Среда:
  • Версия Java: 17
  • IDE: IntelliJ IDEA
  • ОС: Windows 11
Если кто-нибудь сможет объяснить, чего мне не хватает, и предложить лучшие практики обработки стека в Java, я буду признателен.

Если хотите, я также могу:
  • Создать реальную задачу отладки на основе вашего собственного кода
  • Напишите вопрос о переполнении стека, связанный с Git
  • Создайте вопрос React / Node.js / Algorithm
  • Или отформатируйте его специально для максимального количества голосов** 🚀


Подробнее здесь: https://stackoverflow.com/questions/798 ... when-the-s

Вернуться в «JAVA»