0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 3
|
||||||
1 | ||||||
Почему при вводе числа программа работает нормально, а при вводе буквы уходит в бесконечный цикл?13.02.2016, 14:43. Показов 8646. Ответов 5
Метки нет Все метки)
(
0
|
13.02.2016, 14:43 | |
13.02.2016, 14:43 | |
Ответы с готовыми решениями:
5
InputMismatchException почему бесконечный цикл при вводе? При вводе букв или спец. символов программа уходит в цикл. |
260 / 87 / 30
Регистрация: 29.10.2015
Сообщений: 196
|
|
13.02.2016, 14:53 | 2 |
1) А что такое choice, как и где она объявлена?
2) Потенциально опасное место - рекурсивный вызов maimenu. Стек вызовов в течение всей работы программы растет и не освобождается. Спустя какое-то время программа гарантированно свалится. Лучше делать вызов mainmenu() в цикле из main().
0
|
![]() 30 / 6 / 9
Регистрация: 23.03.2015
Сообщений: 508
|
|
13.02.2016, 15:00 | 3 |
код низкого уровня! Ты входишь в цикл if(choise == 1) так как ты ввел эту переменную 1 условие повторяется бесконечно, должен быть выход(принудительный), если не меняется условие, вставь break. Если ты вводишь другую цифру функция повторяется, так как идет рекурсия, а условие не выполняется, потомучто не истинно. И если ты пишешь букву программа просто игнорирует, потому что надо задать тип. Лучше пересмотри: типы данных, функции, условия, циклы. Побдробнее их почитаешь будешь лучше видеть код
Добавлено через 3 минуты Решение всех задач из учебника Стивена Праты вот составленные правильно программы, рассмотри их код и поймешь чего не хватает
0
|
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 3
|
|
13.02.2016, 15:15 [ТС] | 4 |
choice - переменная типа int, объявленная заранее
Добавлено через 1 минуту Если я ввожу 1, то повторяется не бесконечно. После очередного вызова mainmenu() мне нужно заново вводить значение choice. А принудительный выход мне и не нужен. У меня большая программа, в общем, и там наоборот нужно, чтобы после выполнения условия возвращало обратно в начало. Я сделал это так.
0
|
260 / 87 / 30
Регистрация: 29.10.2015
Сообщений: 196
|
||||||
13.02.2016, 16:07 | 5 | |||||
![]() Решение
Понятно. Если cin ожидает int, а вы вводите другое - возникает ошибка потока, которую нужно либо проверять, либо обрабатывать.
Вот тут хорошие рассуждения на эту тему нашел: http://www.linux.org.ru/forum/development/5305320 Добавлено через 2 минуты А вот из-за этого тем более нужно избавиться от рекурсивного вызова. Иначе, это бомба замедленного действия. Рекурсия всегда должна быть конечной. Если у вас она получается бесконечной - заменить ее на цикл.
1
|
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 3
|
|
13.02.2016, 16:48 [ТС] | 6 |
Тему можно закрыть. Дело было в том, что я вызывал функцию в функции, это и повлекло за собой бесконечный цикл. Нашел решение, чтобы не вылетало при написании буквы. Нужно изменить choice из int на char, тогда все отлично работает. Если нужно кому-то.
0
|
13.02.2016, 16:48 | |
13.02.2016, 16:48 | |
Помогаю со студенческими работами здесь
6
Объяснить почему при заполнении матрицы программа уходит в бесконечный цикл
Бесконечный цикл при вводе букв Бесконечный цикл при вводе несоответствующего типа данных Почему цикл на при 1 уходит в бесконечный цикл? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
![]() |
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Как закрыть порт в Linux
hw_wired 14.02.2025
Управление сетевыми портами в Linux - непростая, но важная задача для обеспечения безопасности системы. Каждый открытый порт - это потенциальная уязвимость, через которую злоумышленики могут. . .
|
Ошибка Angular "Can't bind to 'taskForm' since it isn't a known property of 'form'"
hw_wired 14.02.2025
При разработке веб-приложений на Angular можно столкнуться с ошибкой "Can't bind to '' since it isn't a known property of 'form'". Эта ошибка появляется в консоли браузера когда мы пытаемся. . .
|
Сообщение Git "Pulling without specifying how to reconcile divergent branches is discouraged"
hw_wired 14.02.2025
При работе с системой контроля версий Git многие разработчики сталкиваются с предупреждающим сообщением "Pulling without specifying how to reconcile divergent branches is discouraged". Это. . .
|
Как настроить количество пробелов в отступах табов в Visual Studio Code
hw_wired 14.02.2025
Visual Studio Code предоставляет несколько гибких способов настройки табуляции, каждый из которых имеет свои преимущества. Самый простой и наглядный метод - через графический интерфейс настроек, где. . .
|
Что означает знак восклицания в TypeScript
hw_wired 14.02.2025
TypeScript - удивительный язык программирования, который предоставляет множество возможностей для работы с типами данных. Особый интерес вызывает оператор утверждения ненулевого значения, который. . .
|
Как свернуть/скрыть секции кода в Visual Studio Code
hw_wired 14.02.2025
Ежедневно мы работам с файлами, содержащими сотни и тысячи строк кода. Навигация по такому объему становится настоящим испытанием, особенно когда нужно быстро найти нужный метод или переменную. . . .
|
Автоматическое создание файла requirements.txt в Python
hw_wired 14.02.2025
Дружелюбная среда для разработки на Python, один из самых широко используемых языков программирования, состоит не только из самого кода, но и целого ряда важных компонентов. И если вы когда-нибудь. . .
|
Передача переменных окружения в контейнер Docker
hw_wired 14.02.2025
При работе с Docker контейнерами возникает необходимость передать различные настройки и конфигурационные параметры - от строк подключения к базам данных до API ключей. И хотя можно жестко прописать. . .
|
Отличия Constructor и ngOnInit в Angular
hw_wired 14.02.2025
Разработка компонентов в Angular - непростая задача, особенно когда дело доходит до правильной инициализации и управления их жизненным циклом. Каждый разработчик рано или поздно сталкивается с. . .
|
Ошибка "Transport security has blocked a cleartext HTTP" в iOS
hw_wired 14.02.2025
В iOS-разработке часто возникают неожиданные препятствия, и одним из самых распространенных является сообщение об ошибке "Transport security has blocked a cleartext HTTP". Эта ошибка появляется,. . .
|