본문 바로가기
프로그래밍/JAVA

08 제어문_조건문(if문,switch문 / 기타,누적,증감 연산자)

by 윤지(●'◡'●) 2021. 3. 25.
반응형


제어문

제어문은 위에서 아래로만 흐르던 코드의 흐름을 제어하기 위해 사용하는 문장이다.

 

제어문은 크게, 조건문(선택제어문)과 반복문(반복제어문)으로 나누어진다.

 

 

 

제어문의 구조

 

 

 

 

01 조건문

조건문이란, 말 그대로 주어진 조건에 따라 다른 문장을 선택할 수 있도록 프로그래밍하는 것을 말한다.

 

조건문은 아래와 같은 상황에서 사용한다.

▪ 조건에 따른 경우의 수를 나눌 때 사용
▪ 흐름을 나눌 때 사용
▪ 선택지를 주어줄 때 사용
▪ 특정한 상태 물어볼때 사용
  ex) 입력한게 3이니? 비밀번호가 "apple"이니?

 

1) if문

 

다음과 같은 상상을 해 보자.  "돈이 있으면 택시를 타고 가고 돈이 없으면 걸어 간다."

프로그래밍도 위처럼 조건을 판단해서 그 상황에 맞게 처리해야 할 경우가 생기게 된다.

이렇듯 조건을 판단하여 해당 조건에 맞는 상황을 수행하는데 쓰이는 것이 바로 if문이다.

위와 같은 상황은 아래의 코드처럼 표현할 수 있다 :)

 

int myMoney = 0;
if(myMoney < 3000){
	System.out.println("돈이 없습니다. 걸어가세요");
}else{
	System.out.println("택시를 타러 가볼까요~?");
} 

 

▪ if문의 기본구조

if(조건식){
		조건식이 참일 때 실행
	}
else{
		위의 조건식이 거짓일 때 실행
	}

조건문이 참이면 if문의 문장들을 수행하고 조건문이 거짓이면 else문의 문장들을 실행한다.

 

 

 

▪ if ~ else if 문 

if문의 기본구조만으로는 다양한 조건을 판단할 수 없다. 이 점을 보완하기 위해 사용할 수 있는것이 else if이다.

첫번째 if 조건식이 거짓일때만 else if문으로 이동하며, else if도 거짓인 경우에는 else의 값을 출력한다.

 

if(조건식1){
		조건식1이 참일 때 실행
	}else if(조건식2){
		조건식2가 참일 때 실행
	}
	.... else if 갯수 제한 X > 즉, 이제 경우의수가 여러가지여도 가능하다
	else{
		위의 조건식들이 전부 거짓일 때 실행
	}

 

맨 처음에 적은 택시 예제를 else if로 응용하자면 아래와 같이 할 수 있다.

"돈이 5000원 이상이라면 택시를 타고, 1500원이상 5000원 미만이라면 버스를 타고, 그 외에는 걸어가야한다 "

 

Scanner sc = new Scanner(System.in);
int myMoney = sc.nextInt();
		
if(myMoney>=5000) {
	System.out.println("택시를 타자!");
}
else if(1500<=myMoney&& myMoney<5000) {
	System.out.println("버스를 타자!");
}
else {
	System.out.println("돈이 없으니 걸어가자(;′⌒`)");
	}

 

결과

 

1000
돈이 없으니 걸어가자(;′⌒`)
5000
택시를 타자!
2880
버스를 타자!

 

 

 

2) switch~case~default문 

 

▪ if문은 다수의 비교 연산자를 사용하여 조건을 판단하는 반면, switch문은 여러 case중 일치하는

  특정값을 찾아내기 쉬운 조건문이다.

 

▪ 경우의 수가 어떤 한 변수의 값을 등가 비교로 인해서 나눠야 할 때 사용한다.


변수에 담긴 값에 따라 알맞은 case로 이동하고 문장을 실행한다.

  하지만 그 밑에 case가 더 있다면 그안에 있는 문장들도 실행된다.

  따라서 각 케이스들을 나누어 주려면 알맞게 break(기타연산자) 를 사용해야한다.

 

▪ case 중 맞는 값이 없으면 default의 값이 실행된다.

 

▪ switch문의 기본구조

 

switch(변수){
	case 값1:
		변수의 값이 값1 일때 실행
	case 값2:
		변수의 값이 값2 일때 실행
	....
	default:
		변수의 값이 위의 값들이 아닐 때 실행
	}

 

▪ switch문을 활용하여 만든 혈액형 테스트 (✿◡‿◡)

 

Scanner sc = new Scanner(System.in);
System.out.print("당신의 혈액형은?");
String type = sc.next();
String result = "";
		
		switch(type){
			case "A":
				result = "A형인 당신은 감수성이 뛰어나며 공감능력이 극대화 되어있습니다.";
				break;
			case "B":
				result = "B형인 당신은 생각이 기발하고 창의적 입니다.";
				break;
			case "O":
				result = "O형인 당신은 동글동글하며 친화력이 좋습니다.";
				break;
			case "AB":
				result = "AB형인 당신은 은근 꼼꼼하고 세심합니다.";
				break;
			default:
				result = "혈액형이 아닙니다. 다시 입력하세요.";
		}
				
		System.out.println(result);

 

기타연산자

break;

속해있는 switch문이나 반복문을 탈출한다.
만약에 if문 안에 break가 있다면, if문을 감싸고 있는 switch나 반복문을 탈출하게 된다.

 

 



누적 대입 연산자(복합 대입 연산자, 누적 연산자)

누적 대입 연산자는 코드를 효율적으로 줄일 수 있는 연산자로, 누적값을 구할 때 많이 사용한다.

 

a += 10          =         a = a + 10
a -= 10          =         a = a - 10
a *= 10          =         a = a * 10
a /= 10          =         a = a / 10
a %= 10          =         a = a % 10

 

예시

 

int money = 10000;
int pocketMoney = 5000;
int foodExpenses = 2000;
money += pocketMoney; // money = 15000
money -= foodExpenses; // money = 13000

 

 

 


증감 연산자

값이 1씩 증가하는 경우에 사용하는 연산자로 +와-만 사용가능하다.

 

1) 전위형

int data = 0
++data;
--data;

위의 코드와 같은 형태로, 해당 줄 부터 바로 적용된다.

 

2) 후위형

int data = 0;
data++;
data--;

위의 코드와 같은 형태로, 다음 줄 부터 적용된다.

 

 

▪ 전위형 후위형 예시

int data = 0;
		
// 전위형
System.out.println(++data); // 1
System.out.println(data); // 1
	
data = 0;
// 후위형
System.out.println(data++); // 0
System.out.println(data); //1
반응형

댓글