이론/자바 기초

Java 그게 뭐야? 7. if문과 switch문

달거북씨 2022. 1. 27. 00:00

1. 제어문

 - 위에서 아래 방향으로 진행되던 코드의 흐름을 제어하기 위해 사용하는 문장

 - 조건문(선택제어문) : if문(if~else / if~else if~else), switch문(switch~case~default)

 - 반복문(반복제어문) : while문, for문

 

조건문

조건을 만족할 때만 {} 안의 문장들을 수행한다.

조건에 따라 경우의 수를 나누어 선택지를 준다.

1) if문

if(조건문1){

          조건문1의 연산 결과가 true일 때 실행됨

} else if(조건문2){

          조건문2의 연산 결과가 true일 때 실행됨

}  else if(조건문3){

          조건문3의 연산 결과가 true일 때 실행됨

}

.

.

. // else if는 경우의 수에 따라 여러 개 만들 수 있다.

else{

          위의 조건문이 모두 false일 때 실행

}

조건문 중 하나가 참true인 경우 블럭{] 안의 내용을 모두 실행한 후, 아래의 내용들은 실행하지 않고 if문 한 세트를 탈출한다.

else if와 else는 생략 가능. 하지만 if 없이 단독으로는 사용될 수 없다.

 

2) switch문

switch(변수){

case 값1:

          변수의 값이 값1일 때 실행

          break;★(중요)

case 값2:

          변수의 값이 값2일 때 실행

          break;

.

.

.

default:

          변수의 값이 위의 값들이 아닐 때 실행

}

변수에 담긴 값에 따라 알맞은 case로 이동해 문장을 실행한다. break문이나 switch문의 끝(닫는 괄호{})을 만나면 switch문 전체를 빠져나간다. 만약 break;를 써주지 않으면 다음 case문으로 내려가 그 안에 있는 문장들도 실행한다. 따라서 각 케이스들을 나누어 주려면 알맞게 break;를 사용해야 한다.★(중요)

switch문은 항상 if문으로 바꿀 수 있다. 반대는 제약조건을 고려.

switch문의 제약조건

 - switch문의 조건식 결과는 정수 또는 문자열이어야 한다.

 - switch문의 값은 중복될 수 없다.

 

 

if문 예제

Scanner로 정수를 입력 받아 세 가지 경우의 수로 짠 if문. 입력된 정수가 0일 경우, if(num>0) > false, else if(num<0) > false로 마지막 else에 가서 출력이 된다. else는 따로 조건을 붙이지 않는다.

 

 

if문 예제(일괄처리)1

 

코드의 중복을 최소화하기 위해, 위의 코드를 변수 result를 사용해서 바꿔주었다. 그 결과 출력 메소드를 중복 없이 아래에 한 번만 사용해서 일괄처리되었다.

 

 

 

 

 

 

 

 

 

if문 예제2

A가 4번 정답인 경우와 A가 그 외 선택지일 경우, A가 선택지 외 번호일 경우 총 세 가지의 경우의 수가 나온다. A가 1, 2, 3번일 경우를 else if(A==1), else if(A==2), else if(A==3) 이런 식으로 일일이 적어주는 것도 가능하지만 번거롭기 때문에, 저번 포스팅에 설명했던 논리 연산자 ||를 사용하면 간편하다. ||는 두 조건식의 연산결과 중 하나라도 ture이면 true이다. else if(A==1 || A==2 || A==3) > A가 1 or 2 or 3 이면 true이기 때문에 result는 "오답입니다."가 출력된다.

 

 

switch문 예제1

모든 if문은 switch문으로 변환이 가능하다.

case1, 2, 3은 모두 동일한 "오답입니다."를 출력하기 때문에 case 별로 출력 메소드를 써주지 않아도 된다.

위 if문 예제와 마찬가지로 일괄처리도 가능하다.

case 별로 break; 필수!

 

 

조건문 실습

 

1) switch문 실습

case 변수에는 switch문 예제1 처럼 정수를 쓸 수도 있지만 실습문제처럼 문자열도 가능하다. 

소문자 대문자 무시하고 입력받고 싶을 때 사용 가능한 메소드가 있다.

.equalsIgnoreCase() : 비교대상과 값이 같을 경우 true 또는 false를 반환한다.

ex. System.out.println(type.equalsIgnoreCase("ENFJ"));

변수에 정수나 문자열만 사용가능한 것은 switch문의 제약으로, true와 false를 사용할 수 없기 때문에 if문에서 사용하는 것을 추천한다.

 

2) if문 실습

문자열끼리 비교할 때는 "문자열1".equals("문자열2") 형식의 메소드를 사용한다. 

위에서 언급한 .eqalsIgnoreCase()를 적용시켜보면, if(type1.equalsIgnoreCase("ISJF")) 이렇게 사용할 수 있다. 문자열을 입력 받을 때 "isjf" 소문자로 입력받아도 "ISFJ"의 출력 메소드가 출력된다.

 


 

728x90