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

Я в Java человек новый и мне не дает покоя один вопрос: как правильно прервать цикл?

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

примерно так:


        try {
            reader = new BufferedReader(new FileReader("src/cache/vk" + own_Id + "/Id/Idold.txt"));
            for (int i = 0; i <= 4; i ++) {
                postIdOld [i] = Integer.parseInt(reader.readLine());
            }
        } catch (RuntimeException e) {
            System.out.println("reader faile");
            break;
        } finally {
            reader.close();
        }

Правильно ли я делаю или есть лучше способ?


Ответы (1 шт):

Автор решения: Константин Рыбаков

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

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

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

for (int i = 0; i <= 4; i ++) {
     int parsed = Integer.parseInt(reader.readLine());

     // Например цикл выполняется второй раз и число больше 20
     // Тогда сработает break и цикл больше выполняться не будет
     // а программа пойдет дальше
     if(parsed > 20) {
         
         break;
     } 
     postIdOld[i] = parsed;
}

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

→ Ссылка