(Java) If문과 Switch문 실습

DevSeoRex·2022년 5월 29일
0

Java

목록 보기
3/15
post-thumbnail

IF문과 Switch문이 어떤 차이가 있는지 알아보기 위해서 while문을 통해 반복하다가 특정 번호가 입력되면 종료되는 프로그램을 작성해 보았다.

먼저 IF문으로 작성한 코드다.

import java.util.Scanner;
public class Test2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(true) {
			System.out.println("1.계속 2.계속 3.계속 4.종료");
			int num = sc.nextInt();
			if(num == 1) {
				System.out.println("계속");
			}else if(num ==2) {
				System.out.println("계속");
			}else if(num ==3) {
				System.out.println("계속");
			}else if(num ==4) {
				System.out.println("종료");
				break;
			}else {
				System.out.println("잘못된 입력");
			}
		}
	}
}

Scanner를 통해서 숫자를 입력받고,
1~3까지의 숫자면 계속을 출력하고 반복을, 4를 누르면 종료가 되고, 다른 숫자를 입력하면 잘못된 입력이라는 메시지를 출력하는 코드이다.

output :

while문의 조건이 true이므로 무한정 반복되기 때문에
4번을 입력했을때만 break문으로 while문을 정지해주어야 종료가 되는 구조다.

이번에는 Switch문으로 작성해보았다.

import java.util.Scanner;
public class Test3 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		boolean isStop = false;
		while(!isStop) {
			System.out.println("1.계속 2.계속 3.계속 4.계속 5.종료");
			int num = sc.nextInt();
			switch(num) {
			case 1:
				System.out.println("계속");
				break;
			case 2:
				System.out.println("계속");
				break;
			case 3:
				System.out.println("계속");
				break;
			case 4:
				System.out.println("계속");
				break;
			case 5: 
				System.out.println("종료");
				isStop = true;
				break;
			default:
				System.out.println("잘못된 입력");
				break;
			}
		}
	}
}

Switch문은 구조가 조금 다르다.
case 문의 끝마다 break;를 걸어주어야 한다
break를 걸지 않으면 다음 case문까지 순차적으로 다 실행해버리기 때문에, break문으로 빠져나가게 해야한다.
case문 안에서의 break는 while문을 종료하는 것이 아닌, case문을 빠져나가는 break다

그렇기 때문에 아까처럼 조건을 만족하면 while문까지 종료 시키기 위해서는 while문의 조건을 true로 무한 루프돌게 해서는 안된다.

그래서 boolean 타입의 isStop 변수를 선언해서 기본값을 false로 주고
while문의 조건을 !isStop으로 주었다.
isStop이 false일때 계속 동작하라는 의미이다.

5번을 누르면 case문을 빠져나가도록 break문을 써주고 isStop 값을 true로 변경해서 while문도 종료하게 만들었다.

마지막엔 잘못된 입력값이 들어올경우를 대비하여
default옵션을 주어서 1~5 이외의 숫자가 입력될경우
"잘못된 입력" 이라는 메세지가 출력되도록 하였다.









0개의 댓글