#java
#java
Вопрос:
Я хочу, чтобы мой цикл for имел длину, изменяющуюся на число. Могу ли я это сделать?
Я действительно ничего не пробовал
for (int i=0; i < colsAdd[i] ; i ){
System.out.print(" 0.0");
}
На самом деле colsAdd[0]
— это единственный размер.
Комментарии:
1. «Я действительно ничего не пробовал» Почему бы и нет? Также что вы подразумеваете под длиной? Как в
i < colsAdd[i]
разделе?2. У вас есть реальный вариант использования … чего-то, чего вы хотите достичь здесь? Если вы спрашиваете, может ли colsAdd[i] изменяться во время цикла … конечно, может. Это выражение повторно вычисляется каждый раз в цикле, чтобы определить, должен ли цикл завершаться или нет. Этот тестовый оператор может быть вообще любым. — тот факт, что большинство циклов for, которые выглядят следующим образом, имеют постоянную «длину», которая тестируется и которая никогда не меняется, нет причин, по которым это не может быть невозможно…. как в вашем примере. Однако я не могу представить, как логика, которую вы показываете, когда-либо будет практичной. Но, возможно.
3. если colsAdd[0] является единственным значением в массиве colsAdd , и если его значение больше 0 , вы получите ошибку выхода индекса массива за пределы или что-то подобное после первой итерации вашего цикла, потому что вы будете пытаться обратиться к colsAdd[1] , которая не существует.
Ответ №1:
Я не уверен, что я точно понимаю, о чем вы спрашиваете, но, похоже, вам интересно, что вам разрешено помещать в разные части цикла for и в порядке, в котором они выполняются.
Если мы изменим код, который вы вставили выше, чтобы он соответствовал приведенной ниже диаграмме, правила станут очевидными.
for (initialization; condition; updateCounter){
codeInsideLoop
}
Любой код может входить в эти части цикла for, их даже можно оставить пустыми! Например, следующий код эквивалентен циклу while (true).
for (;true;){
System.out.print("This will run forever!");
}
Или этот цикл for увеличивается внутри цикла.
for (int i=0; i < 10;){
System.out.print("This will print 10 times");
i ;
}
В соответствии с вашим вопросом, этот код вызывает функцию на каждой итерации, чтобы проверить, следует ли продолжать цикл. Эта функция может использовать любую логику для возврата логического значения. Он будет выполняться в конце каждого цикла singe независимо.
for (int i=0; keepLooping(i); i ){
System.out.print("This will print 10 times");
i ;
}
Теперь, только потому, что вы можете делать эти вещи, не означает, что вы должны! Обычно вы хотите сохранить структуру ваших циклов простой, чтобы каждый мог понять, какова ваша цель.
Комментарии:
1. Приятно! Я 1 сделал бы это очень хорошее представление о том, что делает оператор for. Мне действительно любопытно, поможет ли это оператору, или его непонимание намного более простое, чем это. В любом случае, кто-то, скорее всего, столкнется с этим и ему это поможет.
2. Спасибо! Я надеюсь, что это поможет ему, но трудно сказать без дополнительной информации.