С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/29: Рейтинг темы: голосов - 29, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 14.10.2019
Сообщений: 39

Задача простой стек

15.02.2020, 12:34. Показов 5478. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Простой стек
54 на informatics
Реализуйте структуру данных "стек". Напишите программу, содержащую описание стека и моделирующую работу стека, реализовав все указанные здесь методы. Программа считывает последовательность команд и в зависимости от команды выполняет ту или иную операцию. После выполнения каждой команды программа должна вывести одну строчку. Возможные команды для программы:

push n
Добавить в стек число n (значение n задается после команды). Программа должна вывести ok.
pop
Удалить из стека последний элемент. Программа должна вывести его значение.
back
Программа должна вывести значение последнего элемента, не удаляя его из стека.
size
Программа должна вывести количество элементов в стеке.
clear
Программа должна очистить стек и вывести ok.
exit
Программа должна вывести bye и завершить работу.
Входные данные
Команды управления стеком вводятся в описанном ранее формате по 1 на строке.

Гарантируется, что набор входных команд удовлетворяет следующим требованиям: максимальное количество элементов в стеке в любой момент не превосходит 100, все команды pop и back корректны, то есть при их исполнении в стеке содержится хотя бы один элемент.

Выходные данные
Требуется вывести протокол работы со стеком, по 1 сообщению в строке

For example:
Ввод Вывод
push 1 ok
back 1
exit bye


size 0
push 1 ok
size 1
push 2 ok
size 2
push 3 ok
size 3
exit bye

вот мой код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.company;
import java.util.Arrays;
import java.util.Scanner;
import java.util.Stack;
 
public class Main {
    public static void main(String[] args) {
        int size = 0;
        boolean exit = true;
        Scanner in = new Scanner(System.in);
        while (exit){
            String command = in.nextLine();
            Stack<Integer> stack = new Stack();
 
            switch (command){
                case "push":
                    Integer n = in.nextInt();
                    stack.push(n);
                    System.out.println("ok");
                    size++;
                    break;
                case "pop":
                    System.out.println(stack.pop());
                    size--;
                    break;
                    case "back":
                    System.out.println(stack.peek());
                    break;
                case "size":
                    System.out.println(size);
                    break;
                case "clear":
                    stack.removeAllElements();
                    System.out.println("ok");
                    break;
                case "exit":
                    System.out.println("bye");
                    exit = false;
                    break;
            }
        }
    }
}
при вводе команды pop или back стек почему-то пустой
выдает ошибку:
Code
1
2
3
4
Exception in thread "main" java.util.EmptyStackException
    at java.base/java.util.Stack.peek(Stack.java:102)
    at java.base/java.util.Stack.pop(Stack.java:84)
    at com.company.Main.main(Main.java:23)
в чем ошибка помогите пожалуйста
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.02.2020, 12:34
Ответы с готовыми решениями:

Задача со стеками. В первый стек поместить четные числа в порядке неубывания, во второй стек поместить нечетные
Даны четыре стека.Два первых стека пустые,а в двух других находятся натуральные числа.В первый пустой стек поместить четные числа в порядке...

Реализовать простой стек, с функциями добавления и удаления элементов
Реализовать простой стек на си, с функциями добавления в стек и удаления из него, а также проверки пустой ли стек.

Задача на указатели и стек
Задали строчную переменную, которая содержит последовательность символов, среди которых есть цифры. Составить программу, которая превращает...

6
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
15.02.2020, 12:41
Лучший ответ Сообщение было отмечено Itachil как решение

Решение

Цитата Сообщение от Itachil Посмотреть сообщение
в чем ошибка
В том, что в цикле стек каждый раз создается новый. Вынеси его из цикла.
1
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
15.02.2020, 12:45
При каждой новой итерации цикла while, ты создаешь новый стек. Вынеси его за цикл
Java
1
2
3
while (exit){
            String command = in.nextLine();
            Stack<Integer> stack = new Stack();
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
15.02.2020, 19:13
А я бы это "решение" вообще не зачел бы. Создать стек - это значит самому создать структуру данных, работающую по принципу LIFO. То, что написал ТС - это "изюм, добытый из булки".
2
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
15.02.2020, 19:21

Не по теме:

Catstail, именно!


1
15.02.2020, 19:59

Не по теме:

Цитата Сообщение от Catstail Посмотреть сообщение
"изюм, добытый из булки"
ога, хорошая аллегория).

0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
15.02.2020, 21:23
Aviz__, мне это подсказали мои студенты. А раньше я пользовался другой "ртуть, добытая из градусника"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.02.2020, 21:23
Помогаю со студенческими работами здесь

Задача на стек или очередь
Уже неделю бьюсь с этой задачей. Не могу придумать процедуры проверки вхождения\не вхождения в список. Задание такое: написать программу в...

Задача на Стек: прокомментировать код
Обьяснить где какие строчки в программе обьясняют программу на динамические переменные а именно СТЕК! и обьяснить строки Program...

Задача о 8-ми ферзях через стек!
Добрый вечер, мне необходимо было реализовать задачу о 8-ми ферзях через класс стек, который у меня уже создан. Для реализации я взяла...

Контейнеры(ящики) с товаром (задача на стек)
Ограничение по времени: 1 сек На складе хранятся контейнеры с товарами N различных видов. Все контейнеры составлены в N стопок. В...

Задача на стек (сформировать 2 стека из положительных и отрицательных)
Здравствуйте, помогите решить задачу Ввести 10 чисел, разместив в стек. сформировать из этих чисел 2 стека, в первый положительные, во...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru