C# — Зацикливание выполнения части кода
Дабы оно постоянно проверяло, запущен ли процесс steam и включало\выключало процесс.
![]()
![]()
Ну например так:
![]()
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.11.43304
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Программирование на C, C# и Java
Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы
ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode
Бесконечный цикл
Как можно понять из названия, бесконечный цикл – это цикл, написанный таким образом, что он никогда не прекратит своё выполнение, так как никогда не выполнится условие выхода из этого цикла.
В целом, бесконечные циклы считаются плохим тоном и почти всегда являются следствием неправильно написанной программы. Однако случаются моменты, когда такие циклы бывают довольно полезны. Например, если, необходимо, чтобы программа не закрывалась или чтобы из неё не было выхода. Операционные системы и некоторые программы микроконтроллеров зачастую также представляют собой бесконечные циклы.
В большинстве языках программирования создать бесконечные циклы можно тремя способами – при помощи циклов for, while и do…while. Мы разберём бесконечные циклы для языка C#, однако посмотрев на реализацию, очень просто спроецировать код на любой другой язык программирования. Также внизу статьи будут листинги бесконечных циклов на языках C, Java и С++.
Как можно заметить, для рядового программиста бесконечные циклы могут пригодиться довольно редко, но это не повод обходить данную тему стороной и не знать, как реализовать такой приём. Так что давайте для примера сделаем программу, которая выводила бы цифры от 1 до бесконечности.
Бесконечный цикл for на С#
Создать бесконечный цикл крайне просто. Например для того, чтобы сделать бесконечным цикл for, необходимо просто оставить пустые поля в скобках при нём: for ( ; ; ).
Давайте посмотрим, как это выглядит в программе. Для начала мы объявим и инициализируем переменную i нулем. С неё будет вестись отсчёт чисел. Затем идёт цикл for без условий в скобках. Внутри цикла мы сделаем инкремент переменной i, иными словами – прибавим к переменной единицу. Ну и, наконец, так же в цикле будем выводить значение переменной i в консоль.
Как зациклить оператор try catch?
Как вы зацикливаете оператор try/catch? Я делаю программу, которая читает в файле с помощью сканера и читает его с клавиатуры. Так что я хочу, если файл не существует, программа скажет: «Этот файл не существует, попробуйте еще раз». затем введите тип пользователя в другое имя файла. Я попробовал пару разных способов попробовать это сделать, но все мои попытки заканчиваются сбойной программы.
5 ответов
Если вы хотите повторить попытку после сбоя, вам нужно поместить этот код внутри цикла; например что-то вроде этого:
(A do-while — немного более элегантное решение.)
Однако в этом контексте BAD PRACTICE поймает Exception . Он поймает не только те исключения, которые вы ожидаете (например, IOException ), но также и неожиданные, например NullPointerException и т.д., Которые являются признаками ошибки в вашей программе.
Лучшая практика заключается в том, чтобы поймать исключения, которые вы ожидаете (и можете обрабатывать), и позволять другим людям распространяться. В вашем конкретном случае достаточно ловли FileNotFoundException . (Это то, что объявляет конструктор Scanner(File) .) Если вы не использовали Scanner для ввода, вам может понадобиться вместо этого IOException .
Я должен исправить серьезную ошибку в голосующих ответах.
Это неверно, поскольку проверка наличия файла недостаточно:
- файл может существовать, но у пользователя нет разрешения на его чтение,
- файл может существовать, но быть каталогом,
- файл может существовать, но быть недоступным из-за ошибки жесткого диска или аналогичного
- файл может быть удален/отсоединен/переименован между тестом exists() test и последующей попыткой его открыть.
Обратите внимание, что:
- File.exists() ТОЛЬКО проверяет, что объект файловой системы существует с указанным путем, а не то, что он на самом деле является файлом или что пользователь имеет доступ к нему для чтения или записи.
- Невозможно проверить, не завершится ли операция ввода-вывода из-за ошибок жесткого диска, ошибок сетевого диска и т.д.
- Не существует решения проблемы с открытым или несвязанным/переименованным расом. Хотя это редко встречается при обычном использовании, такая ошибка может быть нацелена, если файл, о котором идет речь, является критическим для безопасности.
Правильный подход состоит в том, чтобы просто попытаться открыть файл и поймать и обработать IOException , если это произойдет. Это проще и надежнее, и, вероятно, быстрее. И для тех, кто сказал бы, что исключения не должны использоваться для «нормального управления потоком», это не нормальное управление потоком.
Как зациклить массив строк? учебный класс?
Итак, эта программа позволяет пользователю вводить пять прилагательных и существительных, которые выводятся в абзаце. У этой игры есть определенное название, которое обычно встречается в детских журналах. но сейчас оно ускользает от меня. Бывший. «Мария вскочила на (прилагательное) лошадь. и пролетел над ___(существительное).
Я создал класс как для существительного, так и для прилагательного.
Здесь между выше и ниже есть некоторый код, который добавляет информацию из текстовых полей в массив. Ниже приведен код, в котором перечислены существительные и прилагательные. Хотя на данный момент я работаю только с существительными, а прилагательные включу в абзац позже.
Так что у меня есть это.
Теперь это работало раньше, когда я использовал целые числа (только я использовал «size()-1» вместо длины), поэтому я не уверен, что код урод, потому что сейчас я использую строки и класс.
Возможное важное примечание: когда я делал существительное «точка», мне хотелось поставить «класс» после точки. Так что я немного потерялся сейчас.
И я только что понял, что он будет перечислять все существительные в том месте, где я назначил существительные в абзаце . но я выясню это позже.