Java

Java) 순환(loop) : for문 정리 예제 및 활용

pogun 2024. 12. 27. 22:57

순환(loop) : for

정의 : 지정한 횟수만큼 반복 처리하는 제어문

: 반복문, 순환문, loop문 이라고 불린다.

**endless loop(무한 루프) 주의**

 

형식 :  실행순서 : 초기화 -> 조건식 -> 처리 -> 연산식 -> 조건식 ...(반복)
    for(초기화(1) ; 조건식(2)(5)(8)(11) ; 연산식(4)(7)(10)){
        처리(3)(6)(9)
    }


for문 예제

int i;
for(i = 0; i < 10; i++){
    System.out.println("i = " + i);
}
System.out.println();

for(i = 1; i <= 100; i++){
    System.out.println("i = " + i);
}

: 위 코드처럼 "for(초기화; 조건식; 연산식;)"

초기화 자리에서 선언

for(int n = 1; n <= 10; n++){
    System.out.println("n = " + n);
}

for(int w = 0; w < 10; w++){
   System.out.println(w + 1);
}

for(int i = 9; i >= 0; i--){
    System.out.println(i);
}

: 초기화 자리에 변수 선언 동시에 가능(개인적으로 이게 더 편한 것 같음)

**상황에 따라 사용하면 된다**

보통 잘 안쓰는 방법

for(int i = 0; i < 10; i=i+2){
    System.out.println(i);
}

: 연산식을 저런식으로 잘 쓰지않는다.(상황에따라..?)

1 ~ 10까지 합계를 구하라

int sum = 0;
for(int i = 1; i < 11; i++){
    sum = sum + i;
}
System.out.println(sum);

: 1부터 10까지 순환하는 동안 저장해줄 변수만 생성해주면 된다.

0 = 0 + 1

1 = 0 + 2 

3 = 0 + 3

     :

     :

28 = 0 + 8

36 = 0 + 9

45 + 0 + 10

55

: 이런 느낌

1 ~ 100 사이의 숫자 중에 짝수만 출력하라

for(int i = 1; i <= 100; i++){
    if(i % 2 == 0){
        System.out.println(i);
    }
} // i에서 2로 나눈 나머지가 0이다.(짝수)

: i를 2로 나눴을 때 나머지가 0이면 짝수를 의미한다.

1 ~ 100 사이의 숫자 중에 홀수만 출력하라

for(int i = 1; i <= 100; i++){
    if(i % 2 == 1){
        System.out.println(i);
    }
} // i에서 2로 나눈 나머지가 1이다.(홀수)

: i를 2로 나눴을 때 나머지가 1이면 홀수를 의미한다.

for + array 활용 예제

int array[] = {11, 22, 33, 44, 55};

for(int i = 0; i < array.length; i++) {
    if (array[i] % 2 == 0) {
        System.out.println(array[i]);
    }
}

int array1[] = {11, -22, -33, 44, 55};

for(int i = 0; i < 5; i++) {
    if (array1[i] > 0) {
        System.out.println(array1[i]);
    }
}

조건식에 "array.length" 한 이유 : array의 크기가 달라지면 조건식 i < 5에서 에러난다.

foreach -> array, collection(list)

String name[] = {"홍길동", "성춘향", "일지매"};

for(int i = 0; i < name.length; i++){   // i = 0, 1, 2
    System.out.println(name[i]);
}

for(String s : name){                   // s = "홍길동", "성춘향", "일지매"
    System.out.println(s);
}

: 동일한 결과 리턴

최고점수,  최저점수 산출하라 (for + if + array)

int arrCount[] = {90, 85, 95, 75, 80};
int max = arrCount[0];
int min = arrCount[0];

for(int i = 0; i < arrCount.length; i++){
    if(arrCount[i] > max){         // max = 90 -> 95
        max = arrCount[i];
    }

    if(arrCount[i] < min) {        // min = 90 -> 85 -> 75
        min = arrCount[i];
    }
}
System.out.println("최고점수 : " + max + "최저점수 : " + min);

: for문 흐름을 구성하는 능력을 키우자..!

: 문제를 많이 풀어보면서 구상해보고 막힐 때 찾아보기(처음부터 생각안하고 찾아보기 x)

2중 for문(for문 안에 for문)

for(int i = 0; i < 5; i++){
    System.out.println("i = " + i);
    for(int j = 0; j < 3; j++){
        System.out.println("\tj = " + j);
    }
} // i = 0일때 j = 0, 1, 2 반복

: 실행 순서를 중요하게 잘 봐야한다.(순서가 살짝만 꼬여도 망함)

구구단

for(int i = 1; i < 10; i++){
    for(int j = 1; j < 10;j++){
        System.out.println(i + "x" + j + "=" + (i * j) + " ");
    }
    System.out.println();
}