Он соответствует лучшим практикам: четкое название, формулировка проблемы, ожидаемый и фактический результат, минимально воспроизводимый пример и сведения о среде.
Почему моя реализация стека 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
Если хотите, я также могу:
- Создать реальную задачу отладки на основе вашего собственного кода
- Напишите вопрос о переполнении стека, связанный с Git
- Создайте вопрос React / Node.js / Algorithm
- Или отформатируйте его специально для максимального количества голосов**
Подробнее здесь: https://stackoverflow.com/questions/798 ... when-the-s
Мобильная версия