<<Предыдущий урок Список уроков Следующий урок>>
Уроки удобно выполнять в среде разработки IntelliJ IDEA, ссылка на страницу загрузки.
Циклы в Java
Есть два вида циклов в Java, for
и while
.
For
Цикл for
состоит из трех секций:
for (int i = 0; i < 3; i++) {}
Первая секция выполняется один раз, когда мы входим в цикл. В нашем примере здесь задается начальное значение переменной i
. Вторая секция проверяет логическое условие, если оно возвращает true
, выполняются операторы в цикле, если false
, выход из цикла. Вторая секция в первый раз запускается сразу после первой секции, и выполняется каждый раз, пока условие верно, вызывая третью секцию. Третья секция — заключительный оператор, его действие выполняется каждый раз при выполнении цикла. В нашем примере это инкремент, который при каждом выполнении увеличивает значение переменной на единицу.
Таким образом, цикл будет работать 3 раза. Вот порядок команд:
int i = 0; i < 3 // 0 < 3 = true // Inside of loop i++ // i is now 1 i < 3 // 1 < 3 = true // Inside of loop i++ // i is now 2 i < 3 // 2 < 3 = true // Inside of loop i++ // i is now 3 i < 3 // 3 < 3 = false // Loop is done...
Мы можем опустить первую и третью секции цикла (как бы странно это ни выглядело), и цикл все еще будет работать:
for (;i < 5;) {}
Для случаев, где нужно использовать цикл схожих повторяющихся действий, мы используем цикл while
While
Синтаксис похож на предыдущий:
while (condition) {}
Условие будет работать впервые при вводе и каждый раз, когда вызывается цикл. Если условие возвратит false, то цикл не будет работать.
Если мы хотим, чтобы цикл всегда выполнял по крайней мере одно действие, мы можем использовать do-while:
do { } while(condition);
Не забудьте точку с запятой в конце.
Foreach
Другая версия for, это foreach. Но в Java решили не добавлять новое ключевое слово each. Ключевое слово, которое мы используем, все еще for, но когда мы хотим выполнить действия над элементами массива, делаем так:
int[] arr = {2, 0, 1, 3}; for (int el : arr) { System.out.println(el); }
Это была короткая версия, эквивалентная следующей записи:
int[] arr = {1, 9, 9, 5}; for (int i = 0; i < arr.length; i++) { int el = arr[i]; System.out.println(el); }
Заметьте, что, если вы хотите использовать индекс элемента в цикле, Вы должны использовать более длинную версию и не можете использовать foreach.
break and continue
Эти два ключевых слова помогают нам управлять циклом из него. Оператор break останавливает цикл и переходит к оператору, следующему за ним:
int i; for (i = 0; i < 5; i++) { if (i >= 2) { break; } System.out.println("Yuhu"); } System.out.println(i); // Output: // Yuhu // Yuhu // 2
Оператор continue остановит текущую итерацию и переместится в следующую. Заметьте, что в цикле for действие в третьей секции будет выполнено при этом.
int i; for (i = 0; i < 5; i++) { if (i >= 3) { break; } System.out.println("Yuhu"); if (i >= 1) { continue; } System.out.println("Tata"); } System.out.println(i); // Output // Yuhu // Tata // Yuhu // Yuhu // 3
Упражнение
Используя цикл, выведите на экран все четные числа из списка чисел в порядке получения. Не выводите числа, идущие после числа 237 в последовательности.
Выполните упражнение, прежде чем перейти к следующему уроку.
package com.company;
public class Main {
public static void main(String[] args) {
int i;
for (i = 0; i <= 237; i =i+2) {
System.out.println(i);
}
}
}
public class forTest {
public static void main(String[] args) {
int i = 1;
while (i <= 237) {
if (i % 2 == 0) {
System.out.print(i + ", ");
}
i++;
}
}
}
Вначале мы инициализируем переменную i и говорим, что начальное значение ее равняется 1. Затем создаем цикл while и говорим, что i будет максимум 237.
Затем создаем условие, если i деленное по модулю на 2 равняется 0, то выводим i;
И когда условие удовлетворяется, i увеличивается каждый раз на 1.
public class forTest {
public static void main(String[] args) {
for (int i = 1; i <= 237; i++) {
if (i%2==0) {
System.out.print(i + ", ");
}
}
}
}
Задаем границы цикла (переборки). От 1 до 237 включительно, поэтому написал < и =. Если бы оставил меньше, то цикл не включал число 237.
Затем задал условие выводы цикла. Если i деленное по модулю на 2 равняется 0, то выводить это число. Почему деленное по модулю? Потому что проходя математику мы знаем, что четные числа делятся на 2 без остатка. Поэтому и создается условие, если число i делится на 2 без остатка.
Почему я написал System.out.print, а не System.out.println, потому что без ln, это в одну строчку. Затем я добавил запятую.
public class Main {
public static void main(String[] args) {
int[] arr = new int[237];
for (int i = 0; i<=arr.length-1;i++){
arr[i] = i;
if (arr[i]%2 == 0 && arr[i] != 0)
System.out.println(arr[i]);
}
}
}
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 257; i++) {
if (i % 2==1)
continue;
System.out.println(i + " ");
}
}}
public class Main {
public static void main(String[] args) {
for (int s = 0; s < 800; s++){
if (s==119) break;
System.out.println((s*2) + " This is mean" );
}
}} //моя версия как ни странно все работает)))
Если кто может, оцените пожалуйста.
1 способ:
public class Exercise {
public static void main(String[] args) {
int arr = [1, 2, 3, 19, 44, 30, 290, 1000000, 54, 0, 60, 61, 78, 20, 106, 237, 500, 611, 90, 19, 1];
for (; i<arr.length;) {
while (arr[i] != 237) {
if (arr[i]%2==0) System.out.print(arr[i]);
}
}
}
}
2 способ:
public class Exercise {
public static void main(String[] args) {
int arr = [1, 2, 3, 19, 44, 30, 290, 1000000, 54, 0, 60, 61, 78, 20, 106, 237, 500, 611, 90, 19, 1];
for (; i<arr.length;) {
if (arr[i]==237) {
break;
}
if (arr[i]%2==1) {
continue;
}
System.out.println (arr[i];
}
}
}
import com.sun.org.apache.xpath.internal.SourceTree;
import java.util.Arrays;
public class MyJavaClass {
public static void main (String[] args) {
for (int i = 0; i <= 237; i++) {
if (i%2 == 0) {
continue;
}
System.out.println(i);
}
}
}
Учитывая пройденные 5 уроков для меня, как новичка, можно написать только следующее:
public class main {
public static void main (String [] args) {
int i;
for (i = 2; i <= 237; i = i+2);
System.out.println(i);
}
}
Вывод: 2,4,6,…,236
public class Main {
public static void main(String[] args) {
for (int i = 0; i =237){
break;
}
System.out.println(i);}
}
}
}
class Sayit {
public static void main(String[] args) {
for (int i = 1;i <= 118; i++){
int number = 2*i;
System.out.println(number);
}
}
}
int i;
int b = 0;
for (i = 0; i < 237; i++) {
if (i == b){
b=i+2;
System.out.println(i);
}
}
}
public class Program
{
public static void main(String[] args)
{
for(int i = 0;i <=237;i+=1){
i++;
System.out.println(i);
}
}
}
public class Main {
public static void main(String[] args) {
for(int i=1;i<=237;i++) {
if(i%2==0){
System.out.println(i);
}
}
}
}
ArrayList evenNumbers =new ArrayList();
for(int i =0; i237) break;
if( i%2==0 ) { evenNumbers.add(i);}
}
System.out.println(«between 0 and 237 totaly » +evenNumbers.size()+ » even numbers.»);
System.out.println(«there are: » +evenNumbers);
не прокатил…….ну значит — мои примеры НЕ ВЕРНЫ……:))
Для вставки кода используйте кнопку «crayon»
public class celie {
public static void main(String[] args){
for(int i=0; i1)System.out.println(i);
}//if можно убрать, но начнёт печать с 0
}
Последний посыл, если не прокатит…….да и фиг с ним :)))
public class celie {
public static void main(String[] args){
for(int i=0; i1)System.out.println(i);
}//if можно убрать, но начнёт печать с 0
}
Почему то, в предыдущем посте, сьел половину кода………
public class celie {
public static void main(String[] args){
for(int i=0; i1)System.out.println(i);
}// if можно убрать, но начнёт печать с 0
}
вот правильный вариант :
public class Main {
public static void main(String[] args) {
int i;
for(i=0; i<300; i++){
if(i<=237) {
i++;
System.out.println(i + 1);
}
if(i<=237){
continue;
}
System.out.println(i);
}
}
}
как вариант
public class Main {
public static void main(String[] args) {
for ( int i = 0; 2 * i < 273; i++) {
System.out.println(2 * i); // 2 * i — математическая формула для четных чисел
}
}
}
public class Main {
public static void main(String[] args) {
// Спосооб 1//
int i;
for (i = 1; i < 1000; i++) {
if (i % 2 == 0 && i < 273) //Выводит четные числа меньше 273 с помощью логического оператора "И"//
System.out.println(i);
}
System.out.println("Vozmi s polki chokoladky");
// Способ 2//
int x;
for (x = 1; x < 1000; x++) {
if (x == 273) { //Выводит числа меньше 273, когда "x" становится = 273, оператор прекращает работу//
break;
}
if (x%2 == 1){ //Не четные числа пропускает, выводит на экран четные//
continue;
}System.out.println(x);
}
System.out.println("Vozmi eche odnu");
}
}
for ( int i = 0; i < 300; i = i+2) { /*чтоб выводить нечетные числа ( int i = 1; i 237) { /*условие не даст вывести числа больше 237*/
break;
}
System.out.println(i);
}
Пришлось немного подумать, затруднения вызвали путаница с double.
public class Program
{
public static void main(String[] args) {
double w;
for(int i = 1;i <= 237;i++){
w = i % 2;
if(w != 0)
continue;
else
System.out.print(i + " ");
}
}
}
public class homework {
public static void main(String[] args) {
int i ;
for ( i=0 ; i=2) {
System.out.println(i);
}
}
}
}
int i;
for(i = 0; i < 235; i = i + 2)
System.out.println(i + 2);
for(int i = 0; i < 300; i++) {
int a = i % 2;
if(i == 237){
break;
}
if(a == 0) {
System.out.println(i);
}
if(a != 0) {
System.out.println("");
}
}
}
public class java4 {
public static void main (String [] agrs){
int i;
for (i = 0; i = 237) {
break;
}
System.out.println (i*2);
}
}
}
public class main {
public static void main(String[] args) {
int i;
for (i = 0; i = 236){
break;
}
System.out.println(i);
}
System.out.println(i);
}
}
Через while:
int i=0;
while (i<238){
if(i%2==0) {
System.out.println(i);
}
i++;
}
Тоже так пробовал, но не понял сначала как в if проверять остаток от деления. Писал if(i % 2)
Потом решил присваивать остаток переменной, если ни чего не присвоилось (0) то цикл выводит i
for (int i = 2; i < 237; i=i+2) {
System.out.println(i);
}
public class Main {
public static void main(String[] args){
int a,b;
for(a=2,b=2;a<238;a=b*2,b++){
System.out.print(a + " ");
}
}
}
Вот пример.public class Main {
public static void main(String[] args) {
int i;
for (i = 0; i <= 237; i = i +2) { if (i > 237) {
continue;
}
System.out.println(i);
}}}
public class Main {
public static void main(String[] args) {
int i;
for (i = 0; i <= 237; i = i +2) { if (i > 237) {
continue;
}
System.out.println(i);
}
}
}
Не понятно объяснено про continue и break. Хорошо было бы если бы прошлись по каждому значению цикла (итерации) и объяснили почему выводится или не выводиться sout.
break выводит из цикла, continue — переходит сразу к следующей итерации?
public class main {
public static void main(String[] args) {
int i;
for (i =0; i < 237; i = i + 2) System.out.println(i); } }
i = 0 *изначальное число*
I < 237 *говорит о том что цикл не будет идти дальше этой цифры*
i = i + 2 *позволит нам вывести только четные цифры*
i=236
i<237
i+2
i=238
В условии — до 237
public class main {
public static void main(String[] args){
for(int i = 0; i<237; i++){
if(i % 2 == 0){
System.out.println(i);
}}}}
Там где говорится о foreach упущено само foreach, вместо него for
int[] arr = {2, 0, 1, 3};
for (int el : arr) {
System.out.println(el);
}
Или я не прав?
public class Main {
public static void main(String[] args) {
int[] numbers = {
951, 402, 984, 651, 360, 69, 408, 319, 601, 485, 980, 507, 725, 547, 544,
615, 83, 165, 141, 501, 263, 617, 865, 575, 219, 390, 984, 592, 236, 105, 942, 941,
386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345,
399, 162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217,
815, 67, 104, 58, 512, 24, 892, 894, 767, 553, 81, 379, 843, 831, 445, 742, 717,
958, 609, 842, 451, 688, 753, 854, 685, 93, 857, 440, 380, 126, 721, 328, 753, 470,
743, 527};
for (int i = 0; i < numbers.length; i++) { if (numbers[i] == 237) { break; } float el = numbers[i]; if(el % 2 == 0){ System.out.println(numbers[i]); } } System.out.println("Zuuuppp"); } }
нихрена не понимаю (((((