본문 바로가기

Java

[WS live-study] 4주차: 제어문

제어문

프로그램 실행을 조절하고 흐름을 제어하는 문장을 말한다.

 

선택문

if 문

if문은 조건식이 true인지 false인지에 따라 실행하는 구문을 제어하는 역할을 한다. if문에는 if, if-else, if-else if-else 총 세가지 종류로 사용할 수 있다.

 

if 문

if(조건식) {
    // 조건식이 true일 경우 실행하는 구문
}

 

ex)

String color = "red";

if(color.equals("red")) {
	System.out.println("The color is red.");
}

if-else문

if(조건식) {
    // 조건식이 true일 경우 실행하는 구문
} else {
    // 조건식이 false일 경우 실행하는 구문
}

 

ex)

String color = "blue";

if(color.equals("red")) {
    System.out.println("The color is red.");
} else {
    System.out.println("The color is not red");
}

if-else if-else문

if(조건식) {
    // 조건식이 true일 경우 실행하는 구문
} else if(조건식) {
    // 첫번째 조건식은 false이면서 두번째 조건식이 true인 경우 실행하는 구문
} else {
    // 두 조건식 모두 false일 경우 실행하는 구문
}

 

ex)

String color = "green";

if(color.equals("red")) {
    System.out.println("The color is red.");
} else if(color.equals("green")) {
    System.out.println("The color is green.");
} else {
    System.out.println("The color is blue.");
}

switch case 문

switch문은 특정 변수가 어떤 값인지에 따라 다른 구문을 실행해야할 때 사용한다.

단, case 문에는 정수, 문자, 문자열만 사용가능하며, 중복되지 않아야 한다. 변수나 연산, 실수는 case문의 값으로 사용할 수 없다. 사용하면 컴파일 에러가 발생한다.

 

switch (조건식) {
    case 값1:
        // 값1일 경우 실행하는 구문
        break;
    case 값2:
        // 값2일 경우 실행하는 구문
        break;
    case 값3:
        // 값3일 경우 실행하는 구문
        break;
    case 값4:
        // 값4일 경우 실행하는 구문
        break;
    ...
    case 값10:
        // 값10일 경우 실행하는 구문
        break;
    default:
        // case문에 맞는 값이 없거나 
        // case문에 맞는 값이 있어도 break문으로 빠져나가지 않은 경우 실행하는 구문
}

 

ex)

String color = "skyblue";

switch (color) {
    case "red":
        System.out.println("The color is red.");
        break;
    case "blue":
        System.out.println("The color is blue.");
        break;
    case "green":
        System.out.println("The color is green.");
        break;
    case "orange":
        System.out.println("The color is orange.");
        break;
    case "skyblue":
        System.out.println("The color is skyblue.");
    default:
        System.out.println("This is a default area.");
}

/*
[출력 결과]
The color is skyblue.
This is a default area.
*/

반복문

반복문은 조건 검사 후 참일 경우 반복문 내부 구문을 실행하고 다시 돌아와서 조건을 실행한다. false가 될 경우 반복문을 빠져나와 다음 구문을 실행한다. 하지만 true만 나올 경우 중간에 빠져나올 수 있는 명령어가 없다면 무한루프에 빠지게 된다.

 

반복문에는 

  • for문
  • while문
  • do-while문

이 있다. 반복문에서 정의된 변수는 실행될 때마다 메모리를 할당 받는다. 반복문 내부에서만 사용할 수 있고 반복문을 빠져나오는 순간 해당 변수는사용할 수 없다.

for 문

주로 고정된 반복횟수일 경우 사용한다. 하지만 for문으로도 for(;;) 으로 사용할 경우 무제한 반복문으로 사용할 수 있다.

for(초기화; 조건식; 증감식) {
    //조건식이 true일 경우 실행하는 구문
    //실행구문을 모두 마쳐도 다시 돌아가 조건 검사한다.
}

 

ex)

for(int i=1; i<=100; i++) {
    System.out.println("i = " + i);
}
/*
[출력 결과]
i = 1
i = 2
i = 3
i = 4
...
i = 100
*/

while 문

조건식을 만족할 때까지 반복한다. 주로 반복횟수가 고정되어 있지 않을 경우 사용한다.

 

while(조건식) {
    // 조건식이 true일 경우 실행한다. 
    // 구문을 모두 실행하고 다시 조건식으로 돌아가 검사하고 
    // false일 경우 혹은 break, return 문을 만났을 때 빠져나온다.
}

 

ex)

Scanner sc = new Scanner(System.in);
int input = 0;
while (input != -1) {
    System.out.print("입력: ");
    input = sc.nextInt();
    System.out.println("출력: " + input + "\n");
}
/*
[출력 결과]
입력: 100
출력: 100

입력: 20
출력: 20

입력: -1
출력: -1

Process finished with exit code 0
*/

do while 문

while 문은 조건문에서 true가 나와서 내부 실행을 할 수 있다. 하지만 do while은 최소 한번은 실행을 하고 while문의 조건 검사를 통해 반복되는 형태이다.

 

do {
    // 반복 구문. 조건식에 해당하지 않더라도 처음 1회 실행함.
} while (조건식);

ex)

boolean isTrue = false;

do {
    isTrue = true;
} while(isTrue);

위 예제를 보면 while문이었다면 isTrue가 false이기 때문에 실행하지 않고 지나갔겠지만 do while은 처음 한번은 실행을 하기 때문에 변수 isTrue가 true로 바뀌고 반복구문이 계속 실행된다.