JavaRush /Java Blog /Random-KO /Java의 For 루프

Java의 For 루프

Random-KO 그룹에 게시되었습니다
최고의 프로그래머는 게으른 프로그래머라고 하잖아요. 동일한 유형의 작업을 여러 번 수행하는 대신 그는 자신을 위해 작업을 수행할 알고리즘을 생각해 낼 것입니다. 그리고 다시 할 필요가 없도록 잘 해낼 것입니다. Java에서 for 루프를 사용하는 방법 - 1동일한 코드를 반복해서 작성하는 것을 피하기 위해 루프가 발명되었습니다. 0부터 99까지의 숫자를 콘솔에 표시해야 한다고 가정해 보겠습니다. 루프가 없는 코드:
System.out.println(0);
System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
System.out.println(5);
// And so on
이 코드는 100줄이 필요합니다! 너무 많아요. 루프를 사용하면 다음과 같습니다.
for(int i = 0; i < 100; i++) {
   System.out.println(i);
}
단 3줄!

for 루프란 무엇입니까?

for 루프는 알고리즘 실행의 선형성을 깨뜨리고 지정된 코드를 여러 번 실행할 수 있게 해주는 프로그램 코드의 제어 구조입니다. 예를 들어 약 30방울을 복용해야 합니다. 알고리즘은 다음과 같습니다.
  1. 유리잔을 준비하세요.
  2. 뚜껑을 엽니다.
  3. 1 방울을 얻으십시오.
  4. 2 방울을 얻으십시오.
  5. ...
  6. 30드롭을 받으세요.
  7. 약을 닫으세요.
  8. 받은 부분을 가져옵니다.
이 알고리즘은 훨씬 더 빠르게 설명될 수 있습니다.
  1. 유리잔을 준비하세요.
  2. 드립캡을 엽니다.
  3. 30 방울을 얻으십시오.
  4. 약을 닫으세요.
  5. 받은 부분을 가져옵니다.
우리는 다른 사람들과 대화할 때 거의 매일 for 루프를 사용합니다. "...길에서 20걸음 아래로...", "...10번 반복하고 2배 더 느리게 5번 더...", ".. .다양한 카테고리에서 5개 구매하고 경품을 받으세요…” 길게 말할 수도 있지만 의미는 분명합니다. Java에서는 코드를 짧고 간결하게 유지하려면 for 루프가 필요합니다.

for 루프의 작동 방식

for 루프는 다음과 같이 사용됩니다.
for(<начальная точка>; <condition выхода>; <операторы счетчика>) {
	// Loop body
}
Пример перебора цифр от 0 до 5 и вывод каждой в консоль:
for(int i = 0; i < 5; i++) {
   System.out.println(i);
}
결론:

0
1
2
3
4
이 항목을 인간의 언어로 번역하면 다음과 같은 결과가 나옵니다. " 초기 값이 0인 변수 i를 생성하고 5에 도달할 때까지 1을 추가하고 각 단계에서 i 값을 콘솔에 씁니다 ." Java의 for 루프는 다음 다이어그램으로 표현될 수 있는 세 단계를 기반으로 합니다. Java에서 for 루프를 사용하는 방법 - 2루프를 종료하기 위한 조건은 부울 표현식입니다. 거짓이면 루프가 종료됩니다. 위의 예에서 변수는 i1씩 증가합니다. 해당 값이 5보다 작으면 루프가 계속됩니다. 그러나 5보다 크거나 같게 되면 i사이클이 중지됩니다. 카운터 연산자는 카운터 변수에 대한 변환을 수행하는 표현식입니다. 위의 예에서는 변수가 i1만큼 증가했습니다. 즉, 루프는 정확히 5번 실행됩니다. 카운터 연산자가 변수에 2를 추가하면 i결과가 달라집니다.
for(int i = 0; i < 5; i = i + 2) {
   System.out.println(i);
}
결론:

0
2
4
또한 변수를 곱하고, 나누고, 거듭제곱하는 등 일반적으로 원하는 작업을 수행할 수 있습니다. 가장 중요한 것은 변환 결과가 숫자라는 것입니다. 루프의 본문은 실행될 수 있는 모든 코드입니다. 위의 예에서 루프 본문은 변수 i의 값을 콘솔에 출력했지만 이 본문의 내용은 작업과 상상에 따라 제한됩니다. 전체 구성표를 요약하면 이 for 루프의 원리는 다음과 같습니다. 루프 종료 조건에 도달하기 전에 카운터 연산자가 수행하는 변환 횟수만큼 루프 본문에 있는 코드가 실행됩니다. 루프 종료 조건을 다음과 같이 설정하면 true:
for(int i = 0; true; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
unreachable statement그러면 루프 뒤의 코드는 실행되지 않으므로 오류로 표시됩니다 . 독창성에 대한 도전: 아래 코드를 실행하면 " Loop ended"가 콘솔에 출력됩니까, 아니면 루프가 끝없이 실행됩니까?
for(int i = 0; i > -1; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
답변: 있을 것입니다. 변수 i는 조만간 최대값에 도달하고, 더 증가하면 최대 음수값으로 바뀌어 종료 조건이 충족됩니다(i < = -1).

forEach 루프

루프로 작업할 때 배열이나 컬렉션을 반복해야 하는 경우가 있습니다. 일반적으로 for 루프를 사용하여 배열을 반복할 수 있습니다.
public void printAllElements(String[] stringArray) {
   for(int i = 0; i < stringArray.length; i++) {
       System.out.println(stringArray[i]);
   }
}
그리고 그것은 옳습니다. 그러나 배열의 모든 요소를 ​​하나씩 반복하기 위해 forEach 구성을 생각해 냈습니다. 서명은 다음과 같습니다.
for(<Тип element> <Name переменной, куда будет записан очередной элемент> : <Название массива>) {
	// Loop body
}
다음과 같은 방법으로 문자열 배열을 반복하고 각 문자열을 콘솔에 인쇄할 수 있습니다.
public void printAllElements(String[] stringArray) {
   for(String s : stringArray) {
       System.out.println(s);
   }
}
또한 짧고 간결합니다. 가장 중요한 것은 카운터와 종료 조건에 대해 생각할 필요가 없다는 것입니다. 모든 것이 이미 완료되었습니다.

for 루프가 사용되는 방법

이제 다양한 문제를 해결하기 위해 Java에서 for 루프를 사용하는 몇 가지 예를 살펴보겠습니다.

역순환(큰 것에서 작은 것으로)

for(int i = 5; i > 0; i--) {
   System.out.println(i);
}
결론:

5
4
3
2
1

여러 변수 및 루프 본문에서 카운터 증가

for 루프에서 여러 변수를 사용할 수 있습니다. 예를 들어 counter 문에서 변환할 수 있습니다.
int a = 0;
for(int i = 5; i > 0; i--, a++) {
   System.out.print("Step: " + a + " Meaning: ");
   System.out.println(i);
}
결론:

Шаг: 0 Значение: 5
Шаг: 1 Значение: 4
Шаг: 2 Значение: 3
Шаг: 3 Значение: 2
Шаг: 4 Значение: 1
또는 두 개의 변수를 선언하고 서로 동일해질 때까지 반복합니다.
for(int i = 5, j = 11; i != j; i++, j--) {
   System.out.println("i: " + i + " j: " + j);
}
결론:

i: 5 j: 11
i: 6 j: 10
i: 7 j: 9
이 작업에는 가치가 있을 가능성이 거의 없지만 이러한 가능성에 대해 알아두면 유용합니다. for 루프 내에 내부 루프를 만들 수도 있습니다. 이 경우 루프 단계 수는 다음과 같이 곱해집니다.
for(int i = 0; i < 5; i++) {
   System.out.print(i + " | ");
   for(int j = 0; j < 5; j++) {
       System.out.print(j + " ");
   }
   System.out.print('\n');
}
결론:

0 | 0 1 2 3 4 
1 | 0 1 2 3 4 
2 | 0 1 2 3 4 
3 | 0 1 2 3 4 
4 | 0 1 2 3 4
카운터 루프에서는 j외부 루프의 카운터에 액세스할 수 있습니다. 따라서 중첩 루프는 2차원, 3차원 및 기타 배열을 탐색하는 이상적인 방법입니다.
int[][] array = { {0, 1, 2, 3, 4 },
                       {1, 2, 3, 4, 5},
                       {2, 3, 4, 5, 6},
                       {3, 4, 5, 6, 7}};

for(int i = 0; i < array.length; i++) {
   for(int j = 0; j < array[i].length; j++) {
       System.out.print(array[i][j] + " ");
   }
   System.out.print('\n');
}
결론:

0 1 2 3 4 
1 2 3 4 5 
2 3 4 5 6 
3 4 5 6 7 

주기의 조기 완료

루프를 처리하는 동안 루프를 중단해야 하는 경우 break현재 루프 본문을 중지하는 연산자를 사용하세요. 모든 후속 반복도 건너뜁니다.
public void getFirstPosition(String[] stringArray, String element) {
   for (int i = 0; i < stringArray.length; i++) {
       if(stringArray[i].equals(element)) {
           System.out.println(i);
           break;
       }
   }
}
이 메소드는 배열에서 처음으로 검색된 요소의 위치를 ​​인쇄합니다.
String[] array = {"one", "two", "three", "Jeronimo"};
getFirstPosition(array, "two");
결론:

1

끝없는 순환

무한 for 루프를 만드는 또 다른 방법은 카운터 선언 영역, 종료 조건 및 카운터 문을 비워 두는 것입니다.
for (;;) {
}
그러나 대부분의 경우 무한 루프는 논리적 오류의 증거라는 점을 명심하십시오. 이러한 루프에는 종료 조건이 있어야 합니다. Java에서 for 루프를 사용하는 방법 - 3
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION