Как засунуть if в условие for

Компилятор ругается, подскажите, пожалуйста, как засунуть if в for и можно ли вообще?

for (int i = 0; i <nums.length;  if (i < nums.length || i < nums[i].length) i += 1)

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

Автор решения: Vadik

В общем виде цикл for выглядит так:

for (initialization; termination; increment) {
    statement(s)
}

Если у вас сложное выражение increment, то его можно написать в конце тела цикла:

for (initialization; termination;) {
    statement(s)
    increment
}

Однако делать так не рекомендую, это ухудшает читаемость кода. Возможно вам нужно пересмотреть то, что вы делаете.

→ Ссылка
Автор решения: CrazyElf

Даже если это вдруг можно было бы сделать, то какой смысл? Посмотрим на условие:

if (i < nums.length || i < nums[i].length) i += 1

Первая его часть i < nums.length и так всегда истинна, потому что прописана в for (int i = 0; i <nums.length; ..., её вообще нет смысла проверять.
Вторая же часть если она вдруг не выполнится приведёт к тому, что на этой итерации i не увеличится и цикл просто "застрянет" на этом значении i. Правда, неизвестно, что вы делаете внутри цикла, может быть вы изменяете nums[i] внутри цикла, в этом случае просто поместите if (i < nums[i].length) i += 1 внутрь тела цикла (в самый конец его) и всё.

→ Ссылка