본문 바로가기
Backend/Java

Java 12. 조건문

by 샴페인맛있다 2024. 5. 8.

조건문 - if, switch

switch 문은 항상 if문으로 바꿀 수 있으나 if문은 switch문으로 바꿀 수 없는 경우가 있음.


if문

만일 (if) 조건식이 참(true)이면 괄호 {}안의 문장들을 수행함.

if (조건식) {
	//조건식이 참(true)일때 수행될 문장들을 적는다.
    }

 

 

조건식의 결과는 반드시 true 또는 false여야함.

 

① 대입연산자 (=)를 사용했을 때,

if (x=0) { ... }       

→  x=0이 저장되고, 결과가 0이 됨, 결과가 true또는 false가 아님.

 

② 등가비교 연산자(==, !=)를 사용했을 때,

if (x==0) { ... }      또는    if(x!=0) { ... }

→  'x는 0이다'  또는  'x는 0이 아니다' 의 결과인 true나 false를 출력.

 

따라서, 번만 조건식으로 가능함.

 

조건식에 등가비교연산자를 쓰면 결과 출력.
조건식에 대입연산자를 썼을 경우, 에러발생


if- else문

if문에 else블럭이 추가 된 것.

if문의 조건식이 거짓일 때 else블럭의 문장을 수행함.

if (조건식) {
	//조건식이 참(true)일 때 수행 될 문장들을 적는다.
} else {
	//조건식이 거짓(false)일 때 수행 될 문장들을 적는다.
}

if-else문 예제
값을 입력하여 결과를 출력하는 if - else문을 만들어 보았음.

 


if- else if문

처리해야 할 경우의 수가 셋 이상인 경우, if-else if 문을 사용.

첫 번째 조건식 부터 차례로 평가해서 결과가 참인 조건식을 만나면,

해당 블럭{}만 수행하고 'if-else if'문 전체를 벗어남. 

만일 결과가 참인 조건식이 하나도 없으면, 마지막에 있는 else 블럭의 문장이 수행됨.

else블럭은 생략 가능하고, 생략한 경우 if-else-if문의 어떤 블럭도 수행되지 않음.

if (조건식1) {
	//조건식1의 연산결과가 참일 때 수행될 문장들을 적는다.
} else if (조건식2) {
	//조건식2의 연산결과가 참일 때 수행될 문장들을 적는다.
} else if (조건식3) {	//여러개의 else if를 사용할 수 있다.
	//조건식3의 연산결과가 참일 때 수행될 문장들을 적는다.
} else {	//마지막은 보통 else블럭으로 끝나며, else블럭은 생략가능.
	//위의 어느 조건식도 만족하지 않을 때 수행 될 문장들을 적는다.
}

 

if - else if를 이용한 학점 계산기 예제
위의 예제에서 grade = 'D'로 초기화 할 경우, else 블럭 생략가능


중첩 if문

if문의 블럭 내에 또 다른 if문을 포함시키는 것.

 

값을 입력하여 결과를 출력하는 중첩 if문을 만들어 보았음. 입력한 값에 따라 출력값이 달라짐.


Switch문

처리해야 하는 경우의 수가 많은 경우에는 if문 보다 switch문으로 작성함.

하나의 조건식으로 많은 경우의 수를 처리할 수 있음.

 

① switch문은 조건식을 먼저 계산한 다음, 그 결과와 일치하는 case문으로 이동.

② case문 아래에 있는 문장을 수행.

③ break문이나 switch문의 끝을 만나면 switch문을 빠져나감.

★조건식의 결과와 일치하는 case 문이 하나도 없는 경우에는 default문으로 이동.

    default문은 생략가능.

 

 switch 문에는 제약조건이 있기 때문에,

경우의 수가 많아도 if문으로 작성해야 하는 경우가 있음.

 

swich문의 제약조건

1. switch문의 조건식 결과는 정수 또는 문자열이어야 함.

2. case문의 값은 정수, 상수 (문자포함), 문자열만 가능하며, 중복되지 않아야 함. (변수, 실수 불가)

⇒ 제약조건 때문에, if문을 switch문으로 바꿀 수 없는 경우가 있음.

    (switch 문은 항상 if문으로 바꿀 수 있음)

 

5,8,10,12 각각의 값을 화면에 입력했을 때, case에 맞는 다른 값이 출력되는 예제.