JAVA 멍충이 탈출기 4

sein lee·2024년 4월 3일
0

java-study

목록 보기
4/12
post-thumbnail
post-custom-banner

반복문

특정 코드를 반복해서 실행할 때 사용
while , do-while , for

While문1

while (조건식) {
// 코드
}

  • 조건식을 확인한다. 참이면 코드 블럭을 실행하고, 거짓이면 while문을 벗어난다.
  • 조건식이 참이면 코드 블럭을 실행한다. 이후에 코드 블럭이 끝나면 다시 조건식 검사로 돌아가서 조건식을 검사
    한다.(무한 반복)

<while1_2.java>

package loop;
public class While1_2 {
 public static void main(String[] args) {
 int count = 0;
 while (count < 3) {
 count++;
 System.out.println("현재 숫자는:" + count);
 }
 }
}

While문2

<While2_1.java>

package loop;

public class While2_1 {
    public static void main(String[] args) {
        int sum =0;
        int i = 1;
        int endNum =3;

        while(i<=endNum){
            sum = sum +i;
            System.out.println("i="+i+"  sum="+sum);
            i++;
        }
    }
}

=> 코드가 실행되는 횟수를 유연하게 변경할 수 있어야 한다. 한마디로 같은 코드를 반복 실행할 수 있어야 한다.

do-while문

while 문과 비슷하지만, 조건에 상관없이 무조건 한 번은 코드를 실행한다.

do {
// 코드
} while (조건식);

<DoWhile1.java>

package loop;
public class DoWhile1 {
    public static void main(String[] args) {
        int i = 10;
        while (i < 3) {
            System.out.println("현재 숫자는:" + i);
            i++;
        }
    }
}

=> i=10 이기 때문에 아무것도 출력되지 않는다.

<DoWhile2.java>

package loop;
public class DoWhile2 {
    public static void main(String[] args) {
        int i = 10;
        do {
            System.out.println("현재 숫자는:" + i);
            i++;
        } while (i < 3);
    }
}

=> 현재숫자는: 10 한번만 실행되고 i<3 조건에 맞지 않기 때문에 do-while 문을 빠져나오게 된다.

break, continue

break는 반복문을 종료하고 즉시 나간다.
continue는 반복문의 나머지 부분을 건너뛰고 다음 반복을 진행하는데 사용한다.

break
while(조건식) {
코드1;
break;//즉시 while문 종료로 이동한다.
코드2;
}

=> 코드 2가 실행되지 않고 while문 종료된다.

continue
while(조건식) {
코드1;
continue;//즉시 조건식으로 이동한다.
코드2;
}

=> 코드2가 실행되지 않고 다시 조건식으로 이동한다. 조건식이 참이면 while문이 실행된다.

<Break1.java>

package loop;

public class Break1 {
    public static void main(String[] args) {
        int sum = 0;
        int i = 1;
        while (true) { //조건이 항상 참이기 때문에 무한반복
            sum += i;
            if (sum > 10) {
                System.out.println("합이 10보다 크면 종료: i=" + i + " sum=" + sum);
                break; //빠져나오기
            }
            i++;
        }
    }
}

<결과>

<Continue1.java>

package loop;

public class Continue1 {
    public static void main(String[] args) {
        int i = 1;
        while (i <= 5) {
            if (i == 3) {
                i++;
                continue; // i를 하나 증가하고 continue, sout 실행하지 않고 바로 while문으로 이동
            }
            System.out.println(i);
            i++;
        }
    }
}

<결과>

for문1

for문은 주로 반복 횟수가 정해져 있을 때 사용한다.

for (1.초기식; 2.조건식; 4.증감식) {
// 3.코드
}

  1. 초기식이 실행된다. 주로 반복 횟수와 관련된 변수를 선언하고 초기화 할 때 사용한다. 초기식은 딱 1번 사용된다.
  2. 조건식을 검증한다. 참이면 코드를 실행하고, 거짓이면 for문을 빠져나간다.
  3. 코드를 실행한다.
  4. 코드가 종료되면 증감식을 실행한다. 주로 초기식에 넣은 반복 횟수와 관련된 변수의 값을 증가할 때 사용한다.
  5. 다시 2. 조건식 부터 시작한다. (무한 반복)

<For1.java>

package loop;

public class For1 {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            System.out.println(i);
        }
    }
}

<For2.java>

package loop;

public class For2 {
    public static void main(String[] args) {
        int sum =0;
        int endNum=3;

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

for문2

for (초기식; 조건식; 증감식) {
// 코드
}
=> for 문에서 초기식, 조건식, 증감식은 선택이고 생략이 가능하지만 세미콜론은 유지해야한다.

for (;;) {
// 코드
}
=> 무한반복
while (true) {
// 코드
}
=> 무한반복

<Break2.java>

package loop;

public class Break2 {
    public static void main(String[] args) {
        int sum =0;

        for (int i=0; ;i++){
            sum +=i;
            if(sum>10){
                System.out.println("10보다 큼 : "+ i + "  sum : "+sum);
                break;
            }
        }
    }
}

<결과>

중첩 반복문

<Nested1.java>

package loop;

public class Nested1 {
    public static void main(String[] args) {
        for (int i = 0; i < 2; i++) {
            System.out.println("외부 for 시작 i:" + i);
            for (int j = 0; j < 3; j++) {
                System.out.println("-> 내부 for " + i + "-" + j);
            }
            System.out.println("외부 for 종료 i:" + i);
            System.out.println(); //라인 구분을 위해 실행
        }
    }
}

<결과>

문제와 풀이1

<WhileEx1.java>

package loop.ex;

public class WhileEx1 {
    public static void main(String[] args) {
        //while
//        int count = 1;
//
//        while(count<=10){
//            System.out.println(count);
//            count++;
//        }
        //for
        for(int i=1; i<=10;i++){
            System.out.println(i);
        }
    }
}

<WhileEx2.java>

package loop.ex;

public class WhileEx2 {
    public static void main(String[] args) {
        //while
//        int num =1;

//        while (num<=10){
//            System.out.println(num*2);
//            num++;
//        }
//
        //for
        for(int num=1; num<=10; num++){
            System.out.println(num*2);
        }
    }
}

<WhileEx3.java>

package loop.ex;

public class WhileEx3 {
    public static void main(String[] args) {
        //while
//        int max =5;
//        int sum =0;
//        int i =1;
//
//        while(i <=max){
//            sum +=i;
//            System.out.println("i : "+i+ " sum : "+sum);
//            i++;
//        }

        //for
        int max=5;
        int sum=0;
        for(int i=1;i<=max;i++){
            sum +=i;
            System.out.println("i : "+i+ " sum : "+sum);
        }
    }
}

문제와 풀이2

<NestedEx1.java>

package loop.ex;

public class NestedEx1 {
    public static void main(String[] args) {
        for(int i =1; i<=9;i++){
            for(int j=1;j<=9;j++){
                System.out.println(i+"X"+j+"="+i*j);
            }
        }
    }
}

<NestedEx2.java>

package loop.ex;

public class NestedEx2 {
    public static void main(String[] args) {
        int rows = 5;
        for(int i = 1; i <= rows; i++) {
            for(int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
profile
개발감자
post-custom-banner

0개의 댓글