Как работают циклы?
Обучаюсь Java, но самая сложная тема для меня это циклы. При чем все. Сейчас уже начались массивы, а циклы все также не укладываются в голове. Нет понимания откуда берутся формулы и выходные значения. Вот например:
public class Main {
public static void main(String[] args) {
int list[] = {1, 2, 3, 4, 5, 6};
for (int i = 1; i < list.length; i++)
list[i] = list[i - 1];
for (int i = 0; i < list.length; i++)
System.out.print(list[i] + " ");
}
}
- Почему 1 1 1 1 1 1 получается?
- Как расчет происходит?
Вложенные циклы еще сложнее: нет понимания в каком порядке срабатывают циклы или одновременно. Вот пример:
int i, j;
// отобразить верхнюю половину и центральный ряд
for (i = 1; i <= 5; ++i) {
for (j = 0; j < i; ++j)
System.out.print(" " + j);
System.out.println();
}
//отобразить нижнюю половину
for (i = 5; i > 0; --i) {
for (j = 0; j < i; ++j)
System.out.print(" " + j);
System.out.println();
}
Заранее благодарю за ответы.
Ответы (1 шт):
В первом цикле, вы наверное, хотите вычитать единицу из значения содержащегося в массиве. Но по факту вы каждому значению(начиная со второго т.е. 2) присваиваете значение предыдущего. i - в данном случае это не значение, а его индекс в массиве.
int list[] = {1, 2, 3, 4, 5, 6};
for (int i = 1; i < list.length; i++)
list[i] = list[i - 1];
i = 1
list[i] = 2
Индекс представляет номер элемента в массиве, при этом нумерация начинается с нуля, поэтому индекс первого элемента будет равен 0, индекс шестого элемента - 5.
i = 1
list[i] = list[i - 1];
Так как i = 1, вычитаем из него 1, получаем 0
Получается что list[1] = list[0]
Приравниваем значение из первого индекса ко второму. В первом индексе у нас 1.
При последующем переборе у вас происходит та же процедура, но в предыдущем значении уже 1 и она приравнивается всем индексам массива.
Если вы вынесете за скобки -1, т.е. list[i] = list[i] - 1 то тогда вы будете вычитать 1 из значения данного индекса.
Сам цикл for (int i = 1; i < list.length; i++) представляет довольно простое условие.
Первая часть объявления цикла - int i = 1 - создает и инициализирует переменную i.
Вторая часть - условие i < list.length. То есть пока переменная i меньше длины массива, будет выполняться цикл.
length - общее число элементов во всех измерениях массива.
Третья часть - действия, выполняемые после завершения тела цикла - увеличение переменной i на единицу.
Вложенные циклы работают все по тому же принципу. Выполняется условие родительского цикла, потом происходит выполнение вложенного цикла от начала условия до его конца. После чего происходит проверка условия родительского цикла и так по кругу, пока условие родительского цикла не перестанет выполняться.
И да, совет про пошаговый разбор работы цикла на бумаге с карандашом это очень хороший совет, который применим не только к циклам, не оставьте его без внимания.