컴퓨터 & 코딩/Java

[혼공학습단 10기][혼공자] switch 조건문과 반복문

구로그 2023. 6. 29. 17:40
728x90

✓ switch의 형식

switch(조건문) {
	case value1:
    	실행문1;
        break;
    case value2:
    	실행문2;
        break;
    ...
    default: // 해당 변수가 없을 경우 
    	실행문D;
}

이때 만약 case마다 break가 없다면 해당 case 이후 다음 case가 연달아서 실행되게 된다. 

 

 

✓ 반복문 

📚 for문

// for (초기화식; 조건식; 증감식) {} 
for (int i = 1; i <= 100; i++) {
	sum = sum+i;
}

초기화식은 없을 수도 있고 둘 이상 있을 수도 있다.

증감식 또한 둘 이상 있을 수 있으며 둘 이상 있을 경우 쉼표로 구분한다. 

 

 

📚 while문 

조건식이 true일 경우 계속해서 반복, false일 경우 종료 

(Kopfgesteuerte Schleife)

 

 

📚 do-while문

while문은 시작할 때부터 조건식을 검사하지만 do-while문은 일단 실행문을 실행 후 실행결과에 따라 조건식을 검사한다 

(Fußgesteuerte Schleife) 

// while문
while (조건식) {
    실행문
}


// do-while문
do {
    실행문
} while (조건식)

 


연습문제 답 비교 

 

① 연습문제 3번

 

나의 해결방법: 

int num1 = (int) (Math.random() * 6) + 1;
int num2 = (int) (Math.random() * 6) + 1;

System.out.printf("(%1d, %2d)", num1, num2);

while(num1 + num2 != 5) {
    num1 = (int) (Math.random() * 6) + 1;
    num2 = (int) (Math.random() * 6) + 1;
    System.out.printf("(%1d, %2d)", num1, num2);
}

 

답안지의 해결방법: 

while(true) {
    int num1 = (int) (Math.random() * 6) + 1;
    int num2 = (int) (Math.random() * 6) + 1;

    System.out.printf("(%1d, %2d)", num1, num2);

    if ((num1 + num2) == 5) {
        break;
    }
}

답안지의 해결방법은 조건을 더 빨리 만족할 수 있지만 무한 반복문을 사용하기 때문에 종료 조건이 명확하지 않을 시 위험할 수 있다. 

나의 해결방법은 처음부터 조건을 만족하는 경우까지 반복하므로 조건을 만족하는 케이스가 더 오래걸릴 수 있지만, 반복문 진입 전에 초기화하여 종료 조건이 명확하게 주어지므로 코드의 가독성이 좋다.

 

 

② 연습문제 5, 6번 

/*
연습문제 5
*
**
***
****
출력하기

*/
for(int i = 1; i <= 4; i++) {
    for(int j = 1; j <= i; j++) {
        System.out.print("*");
    }
    System.out.println();
}


/*
연습문제 6
    *
   **
  ***
 ****
출력하기 

*/

for(int i = 1; i <= 4; i++) {			
    for(int j=4; j >= 1; j--) {
        if (j > i) {
            System.out.print(" ");
        } else {
            System.out.print("*");
        }
    }
    System.out.println();
}

   

 

 

③ 연습문제 7번

 

나의 해결방법 (if문):

boolean run = true;
int balance = 0;
Scanner scanner = new Scanner(System.in);
int sum = 0;

while(run) {
    System.out.println("-----------------------------------");
    System.out.println("1. 예금 | 2. 출금 | 3. 잔고 | 4. 종료");
    System.out.println("-----------------------------------");
    System.out.print("선택> ");

    String num = scanner.nextLine();

    if (num.equals("1")) {
        System.out.print("예금액> ");
        int money = Integer.parseInt(scanner.nextLine());
        sum += money;
    } else if (num.equals("2")) {
        System.out.print("출금액> ");
        int money = Integer.parseInt(scanner.nextLine());
        sum -= money;
    } else if (num.equals("3")) {
        System.out.println("잔고> " + sum);
    } else {
        break;
    }
    System.out.println();
}
System.out.println();
System.out.println("프로그램 종료");

 

답안지의 해결방법(switch문): 

boolean run = true;
int balance = 0;
Scanner scanner = new Scanner(System.in);

while(run) {
    System.out.println("-----------------------------------");
    System.out.println("1. 예금 | 2. 출금 | 3. 잔고 | 4. 종료");
    System.out.println("-----------------------------------");
    System.out.print("선택> ");

    int menuNum = Integer.parseInt(scanner.nextLine());

    switch(menuNum) {
        case 1: 
            System.out.print("예금액> ");
            balance += Integer.parseInt(scanner.nextLine());
            break;
        case 2:
            System.out.print("출금액> ");
            balance -= Integer.parseInt(scanner.nextLine());
            break;
        case 3:
            System.out.print("잔고> ");
            System.out.println(balance);
            break;
        case 4:
            run = false;
            break;

    }
    System.out.println();
}
System.out.println("프로그램 종료");

 

반응형