Как остановить цикл for java
Перейти к содержимому

Как остановить цикл for java

  • автор:

Как остановить цикл в java

Для остановки цикла в Java можно использовать оператор break . Когда оператор break выполняется внутри цикла, то управление переходит на следующую инструкцию после цикла.

for (int i = 0; i  10; i++)  if (i == 5)  break; // остановка цикла при i=5 > System.out.println(i); > 

Вывод на консоль будет таким:

Как правильно выйти из цикла for?

Я в Java человек новый и мне не дает покоя один вопрос: как правильно прервать цикл? У меня есть текстовый с полями чисел(количество полей не ограниченно), циклом «for» я читаю его и когда цифры заканчиваются, выхожу через исключение «catch». примерно так:

 try < reader = new BufferedReader(new FileReader("src/cache/vk" + own_Id + "/Id/Idold.txt")); for (int i = 0; i > catch (RuntimeException e) < System.out.println("reader faile"); break; >finally

Правильно ли я делаю или есть лучше способ?
Отслеживать
задан 26 авг 2022 в 14:37
bodrovdeni bodrovdeni
31 7 7 бронзовых знаков

Вопрос так поставлен, что можно мозг сломать 🙂 Во-первых у вас цикл «for» ограничен четырьмя итерациями, и никак не вписываются в концепцию с неограниченным количеством полей. Исключение в данном случае может возникать по трём причинам: 1. Файл не найден. 2. Количество итераций не соответствует действительности. 3. Метод parseInt не находит в строке данные типа Integer. RuntimeException — исключение главного потока программы. Это «глобальное исключение» и оно неуместно.

– user435423
26 авг 2022 в 15:17

@VitaliyM.V. Я понимаю, но я и указал это как пример. Я даже примерно не представляю, как оно должно выглядеть.

26 авг 2022 в 15:26

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Ты неправильно понимаешь выход из цикла, catch и break. catch — это не выход из цикла, а блок который выполняется, если в блоке try произошло исключение, например parseInt выдало ошибку.

Что касается цикла, то он отработает у тебя 5 раз и корректно пойдет дальше, если не будет ошибок.

Чтобы прервать цикл раньше — нужно использовать break, но делать это надо внутри блока for. И обычно break выполняется с определенным условием, например:

for (int i = 0; i 20) < break; >postIdOld[i] = parsed; > 

Если просто положить break в цикл — то выполнится всё что до break. break вне блока цикла как у тебя в catch не используется.

Java: Цикл For

Цикл while идеален для ситуаций, когда количество итераций неизвестно заранее, например, при поиске простого числа.

Когда количество итераций известно, предпочтительнее использовать цикл for . Посмотрим реализацию переворота строки через цикл for :

public static String reverseString(String str) < var result = ""; // Счетчик увеличивается с помощью инкремента. // Об этой операции мы поговорим ниже. for (var i = 0; i < str.length(); i++) < result = str.charAt(i) + result; >return result; > 

Этот код можно описать так:

В определении цикла for есть:

  1. Начальное значение счетчика. Этот код выполняется ровно один раз перед первой итерацией
  2. Предикат — условие повторения циклов. Выполняется на каждой итерации. Точно так же как и в while
  3. Описание изменения счетчика. Этот код выполняется в конце каждой итерации

В остальном принцип работы точно такой же, как у цикла while .

Задание

Сэмвелл обнаружил, что его сообщения перехватываются в замке «Близнецы» и там читаются. Из-за этого их атаки перестали быть внезапными. Немного подумав, он разработал программу, которая бы шифровала сообщения по следующему алгоритму. Она бы брала текст и переставляла в нем каждые два подряд идущих символа.

App.encrypt("move"); // "omev" App.encrypt("attack"); // "taatkc" // Если число символов нечётное // то последний символ остается на своем месте App.encrypt("go!"); // "og!" 

Реализуйте статический метод App.encrypt() , который принимает на вход исходное сообщение и возвращает зашифрованное.

Упражнение не проходит проверку — что делать? ��

Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:

  • Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.

В моей среде код работает, а здесь нет ��

Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.

Мой код отличается от решения учителя ��

Это нормально ��, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.

В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.

Прочитал урок — ничего не понятно ��

Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.

Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.

Как приостановить цикл в Java?

Есть форма, в которой присутствуют несколько полей. В них вводятся цифры для расчетов. Когда данные введены, нажимается кнопка и запускается цикл с несколькими итерациями. Внутри цикла производятся расчеты на основе этих данных. Проблема в том, что на каждой итерации нужно корректировать данные в форме. Получается такой диалог постоянный с пользователем.
Пихать в начало каждой итерации thrread.sleep() не вариант, потому что так нельзя ввести новые данные. Что дееелаааать?

  • Вопрос задан более трёх лет назад
  • 418 просмотров

4 комментария

Оценить 4 комментария

GUI какое? Зачем все делать в цикле? Нельзя ли после каждого ввода и нажатия выполнять функцию, которая в том числе изменяет состояние некоего объекта (модели), который помнит состояние и номер шага к примеру?

И вообще подобные вещи нужно выполнять вне гуишного потока, а по нажатию кнопки нужно «будить» поток.

trase8 @trase8 Автор вопроса
Евгений Корначев: Jframe. Плохо разбираюсь в Джаве. Как будить поток?
trase8: Object.wait(), Object.notify()
Решения вопроса 0
Ответы на вопрос 1
Пишу комментарии в комментарии, а не в ответы

По-хорошему, тяжелую логику (а вызовы sleep можно назвать тяжелой задачей, т.к. это тормозит поток, который не сможет обрабатывать события интерфейса) нужно выносить в отдельный поток (thread), GUI-поток должен вести себя пассивно и заниматься лишь взаимодействием с пользователем и запусками background worker’ов (для длительных операций).

В вашем случае есть простой путь: разделить задачки на итерации и выполнять их по таймеру.
Либо организовать полноценный фоновый поток, который можно будет невозбранно тормозить через sleep .

Если английский средней школы позволяет, советую пройти вот этот туториал.

Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

java

  • Java
  • +1 ещё

Класс GuildChannel не найден в JDA. Что делать?

  • 1 подписчик
  • 12 часов назад
  • 27 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *