Почему моя реализация 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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