Приведем несколько примеров того, как можно использовать цикл for в кодах.
Пример №1
Написать цикл, который выводит на экран (в одну сроку) все целые положительные двузначные числа, начиная с наименьшего.
for (int i=10; i<100; i++)
{
System.out.print(i);
}
Пример №2
Написать цикл, который генерирует и выводит на экран 26 целых случайных чисел из диапазона от 10 до 45.
for (int i=1; i<=26; i++)
{
x=(int)(36*Math.random()+10);
System.out.println(x);
}
Пример №3
Написать цикл, который принимает с клавиатуры 45 десятичных дробей и для введенных положительных значений выводит на экран квадратные корни (с соответствующим текстовым сообщением).
for (int i=1; i<46; i++)
{
x=reader.nextDouble();
if (x>=0)
{
y=Math.sqrt(x);
System.out.println("Квадратный корень "+x+" равен "+y);
}
Else
System.out.println("нельзя извлечь квадратный корень!");
}
Пример №4
Написать цикл, который принимает с клавиатуры целое число, затем генерирует 40 случайных чисел из диапазона от 1 до 6.
Цикл выводит на экран (в одну строку) только те из сгенерированных случайных чисел, которые имеют четное значение.
x=reader.nextInt();
for (int i=1; i<=40; i++)
{
y=1+(int)(6*Math.random();
if (y%2==0) System.out.print(y);
}
Следует всегда обращать внимание на один очень важный момент при написании этого рода циклов: если переменная-счетчик объявляется внутри заголовка цикла (так, как это сделано во всех приведенных выше примерах), то она "существует" только в пределах цикла (заголовка и тела). Иными словами – всякая попытка использовать эту переменную уже после тела цикла будет вызывать ошибку.
Сравните два главных метода
public static void main(String[]args) { for (int i=1; i<7;i++) { System.out.print(i+" "); } System.out.println(" and "+i); } | Уже на стадии компиляции появляется сообщение об ошибке, смысл которой: необъявленная переменная. При этом в качестве строки, содержащей эту необъявленную переменную, указывается System.out.println(" and "+i); |
public static void main(String[]args) { int i; for (i=1; i<7;i++) { System.out.print(i+" "); } System.out.println(" and "+i); } | Нет проблем ни на стадии компиляции, ни на стадии исполнения |
Приведем еще два примера – возможные решения следующего задания: "напиши класс, который выводит на экран последовательность двузначных положительных чисел, делящихся на 6".
class primer_for2 { public static void main(String[]args) { for (int i=12; i<=96; i+=6) { System.out.print(i+" "); } } } | В этом варианте переменная-счетчик принимает только нужные значения: начиная с 12 (все равно 10 и 11 не делятся на 12!), заканчивая 96 (все равно 97, 98 и 99 тоже не делятся на 12!), и увеличиваясь при каждом проходе (повторе цикла) на 6 (все равно нет смысла проверять все числа подряд!). При этом сама переменная-счетчик и используется для вывода значений на экран. |
class primer_for3 { public static void main(String[]args) { int x=10; for (int i=1; i<=90; i++) { if ((x+i)%6==0) System.out.print(x+" ") } } } | В этом варианте переменная счетчик отвечает только за установление количества проходов, которое равно общему числу двузначных положительных чисел – и совершенно не используется в теле цикла. За установление значений, которые будут выводиться на экран, отвечает отдельная переменная (х), которая принимает значения всех возможных положительных двузначных чисел – и поэтому каждый раз (при каждом проходе, повторе цикла) производится проверка – выводить ли значение на экран. |
Мы хотим привести еще три варианта решения только что разобранного примера и предлагаем каждому оценить различия в этих вариантах. | |
class primer_for3 { public static void main(String[]args) { for (int i=10; i<=99; i++) { if (i %6==0) System.out.print(i+" "); } } } | Вариант №1 |
class primer_for3 { public static void main(String[]args) { for (int i=12; i<=96; i+=6) { System.out.print(i+" "); } } } | Вариант №2 |
class primer_for3 { public static void main(String[]args) { for (int i=2; i<=12; i++) { System.out.print(i*6+" "); } } } | Вариант №3 |
В будущих разделах мы познакомимся с дополнительными возможностями, которые предоставляет программисту цикл for, но на данный момент гораздо важнее освоиться с пониманием и написанием классов, использующих базовую, "классическую" форму цикла for.
Раздел №15 (часть 2).
Команды повтора – Цикл for
Продолжим наше знакомство с возможностями цикла for – и на этот раз поговорим об использовании в этом цикле не только конкретных числовых значений, но и различных переменных. Их использование делает цикл for более "гибким", то есть количество проходов все равно всегда заранее известно, но теперь оно зависит от того, какие значение принимают используемые в заголовке цикла переменные.
Поясним это примером.
Дан класс.