Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите реализовать многоуровневое меню в консоли 
:(
    Опции темы
TAIMOS
Дата 14.5.2011, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.6.2010

Репутация: нет
Всего: нет



Здравствуйте. Передо мной стоит задача реализовать меню в консоли, что-то типа: 
1. Select artist 
2. Add new artist 
3. Remove artist 

Ввели 1: 
1. Select album 
2. Add new album 
3. Remove album 
4. Back 

Само меню хранится в XML-файле. Я его распарсиваю JDOM'oм в объект. Потом, в зависимости от того, какую цифру ввел пользователь, через switch вывожу на экран информацию + меню. Все бы хорошо, но вот допустим есть у нас на 2 уровне "2. Add new album". После добавления альбома нужно, чтоб вывелось то же меню. То есть нужно, чтоб case 2: повторился заново. Но с помощью switch такого добиться невозможно. Подскажите альтернативу. 

Вот кусок switch'a, чтобы вам было лучше видно суть проблемы: 
Код

        switch(choice) {
            // Albums
            case 1:
                // Get and show artist obj
                Artist artist = selectArtist();
                artist.showArtist();
                // Get and show menu "Albums"
                MenuItem menuItemAlbums = model.getMenuItem(11);
                menuItemAlbums.show();
                // Get data from user
                Scanner input11 = new Scanner(System.in);
                int choice11 = Integer.parseInt(input11.next());
                // Songs
                switch(choice11) {
                    case 1:
                        // Get and show album obj
                        Album album = selectAlbum(artist);
                        album.showAlbum();
                        // Get and show menu "Songs"
                        MenuItem menuItemSongs = model.getMenuItem(111);
                        menuItemSongs.show();
                        // Get data from user
                        Scanner input111 = new Scanner(System.in);
                        int choice111 = Integer.parseInt(input111.next());
                        switch(choice111) 

Помогите, пожалуйста.
PM MAIL   Вверх
_Y_
Дата 15.5.2011, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 5
Всего: 34



По-разному можно сделать.
1. Рекурсия. switch загоняем в вызываемый рекурсивно метод, которому передается параметр choice.  После добавления альбома рекурсивно вызываем тот же метод с тем же параметром.

2. State machine. Строим вокруг switch цикл с выходом по условию, зависящему от величины choice. В каждой ветке switch-а присваиваем или не присваиваем choice новое значение.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1057 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.