자바/자바 입문 공부일지

자바 기초 공부 일지 7. 조건문 조건제어 if문, else, else if, switch문, break문 과일 바구니 예제 문제

Tomitom 2022. 10. 25. 12:59
반응형

파이썬에서 배웠던 if 조건문과 형태가 무척 비슷하지만 조금씩 다른 자바. 

다른 것보다 눈에 익혀두는 것이 시간이 걸릴 것 같아요 ^^ㅠ 

 

● 자바의 if 조건문 알아볼게요. 

if (ture or false) {     -> 불리언 데이터가 들어가거나 불리언 값이 나오는 조건문 

    조건 true 시 실행되는 영역

}

 

package day12;

public class if_ex {

	public static void main(String[] args) {
		
		// 조건 : 불리언 표현식
		int age = 24;
		if(age <= 20) {
			System.out.println("미성년자");
		}
		else {
			System.out.println("성년");
				
			}
		}
		
	}

● if문에 속한 문장이 하나일 경우 중괄호는 생략 가능합니다. 

(but, 중괄호 생략은 안하는 것을 권장합니다. 차후 조건문이 길어지거나 코드가 복잡해질 경우 혼란할 수 있기 때문에.) 

package day12;

public class if_ex {

	public static void main(String[] args) {
		
		// 조건 : 불리언 표현식
		int age = 24;
		if(age <= 20) 
			System.out.println("미성년자");
		else 
			System.out.println("성년");
		}
		
	}

 

● if 조건문을 추가할 때 파이썬에서는 elif 를 썼다면 자바에서는 풀네임 그대로 

else if 로 사용합니다. 몇 개를 추가해도 동일하게 조건문의 역할을 합니다. 

 

package day12;

public class if_ex {

	public static void main(String[] args) {
		
		// 조건 : 불리언 표현식
		
		int age = 6;
		if(age > 20) 
			System.out.println("성년");
		else if(age > 10)
			System.out.println("청소년");
		else if(age > 5)
			System.out.println("어린이");
		else
			System.out.println("아기");
		}
		
	}

여기까지는 자바와 파이썬은 큰 차이가 없는 것 같습니다.. 

자바에는 조건문의 형식으로 하나가 더 삼항 연산식이 있습니다.

 

조건 ? 수1 : 수2

(조건이 참인지 거짓인지) ? 참일 경우 반환 : 거짓일 경우 반환

 

ex) big (num1 > num2) ? num1 : num2 

num1 이 num2 보다 클 경우 num1 을 반환하고 그렇지 않을 경우 num2 를 반환한다. 

package day12;

public class if_ex {

	public static void main(String[] args) {
		
		// 삼항 연산자 (연산식) : 주어진 조건에 따른 값 반환
		// 조건 ? 항1 : 항2
		
		int age = 18;
		
		// (if가 아니라 조건만 적습니다.)
		
		boolean result = age <= 20 ? true : false;
		// 불리언을 선언해주고 result 변수에 true 값을 저장합니다.
		
		String resultS = age <= 20 ? "미성년자" : "성인";
		// 문자열을 선언해주고 result 변수에 "미성년자" 의 값을 저장합니다. 
		
		System.out.println(result);
		System.out.println(resultS);
		
		
		}
		
	}

 

 

● if 조건문을 활용해서 과일바구니 문제를 같이 풀어볼게요. 

 

과일을 10개씩 담을 수 있는 바구니가 몇 개 필요한지 구하는 문제입니다. 
과일의 개수가 정해지면 그에 따른 바구니 개수가 나오도록 계산합니다. 

예) 사과가 123개 일 때, 필요한 바구니는 13개 

(12개의 바구니에 10개씩 담고 3개가 남으면 그것도 하나의 바구니에 담아야 하므로) 
예) 사과가 18개 일 때, 필요한 바구니는 2개

 

package day12;

/*
 * 과일을 10개씩 담을 수 있는 바구니가 몇 개 필요한지 구하기
 * 과일의 개수가 정해지면 그에 따른 바구니 개수가 나오도록 계산하자 
 * 
 * 예) 사과가 123개 일 때, 필요한 바구니는 13개 
 * 예) 사과가 18개 일 때, 필요한 바구니는 2개
 */

public class Quiz01 {
	public static void main(String[] args) {
		
		int numOfApple = 127;
		int numOfBucket;
		
		int fullBucket = numOfApple / 10 ;  // 딱 10으로 나눈 몫 
		int notFullBucket = numOfApple % 10 > 0 ? 1 : 0 ;
		numOfBucket = fullBucket + notFullBucket;
		
		System.out.println("필요한 바구니 수는 " + numOfBucket + "개 입니다.");
	}
		}


int numOfApple = 127;   -> 과일의 갯수를 numOfApple 에 저장합니다. 
int numOfBucket;     -> 바구니의 갯수는 정해지지 않았으므로 numOfBucket 은 선언하지 않고 빈 값으로 둡니다. 

int fullBucket = numOfApple / 10 ;      -> 자바에서 나눗셈을 하면 소숫점 이하는 버리고 몫만 취합니다. 

총 사과의 갯수를 10으로 나눈 몫을 가득찬 바구니 fullBucket 에 저장합니다.


int notFullBucket = numOfApple % 10 > 0 ? 1 : 0 ;   -> 10개로 담아지지 못하고 남은 사과들을 덜 찬 바구니 notFullBucket 에 저장합니다. 사칙연산 % 부호는 나눗셈을 한 뒤 나머지 값을 구합니다. 

과일의 갯수를 총 10개로 나눈 뒤 나머지의 값이 0 이상인가? (조건문)

True 의 경우 (0 이상일 경우) : 0 이상 10미만 (10이라면 나누어졌으므로) 의 갯수라면 바구니를 1개가 추가되므로 1을 저장합니다. 

False 의 경우 (0일 경우) 0일 경우에 바구니는 추가하지 않아도 되므로 0 을 저장합니다. 


numOfBucket = fullBucket + notFullBucket; -> 꽉 찬 바구니와 덜 찬 바구니의 총 갯수를 더하면 바구니의 수가 나옵니다.. 

System.out.println("필요한 바구니 수는 " + numOfBucket + "개 입니다.");
}
}

 

● switch문은 선택제어문의 성격을 가지고 있습니다.

switch문으로 case 조건 값이 어떤 것인지에 대한 경우의 수를 나열할 수 있습니다. 

if 처럼 True False 가 아니라 값에 따라서 경우의 수를 나눕니다. 

경우의 수에 해당이 되면 해당된 case 부터 하단의 모든 case 를 출력합니다. 

ex) n이 1이면 case 1 부터 실행 

      2이면 case 2부터 실행 

 

package day12;

public class Test03 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		// 조건 값 : 정수, 문자 그리고 문자열 중 어떤 값
		
		int condition = 1; 
		switch(condition) {
		case 1 :  // 주어진 조건 값이 1인 경우 여기서'부터' 실행
			System.out.println("1입니다.");
		case 2 :  // 주어진 조건 값이 2인 경우 여기서'부터' 실행
			System.out.println("2입니다.");
		case 10 : // 주어진 조건 값이 10인 경우 여기를 실행
			System.out.println("10입니다.");
			
			// 케이스가 시작되는 부분부터 끝까지 전부 실행 
		}
		
	}

}

 

switch 문이 끝까지 실행되는 것을 막기 위해서는 break문을 실행해야 합니다. 

break 문이 실행되면 switch 문을 빠져나갑니다. 

 

package day12;

public class Test03 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		// 조건 값 : 정수, 문자 그리고 문자열 중 어떤 값
		
		int condition = 1
				; 
		switch(condition) {
		case 1 :
			System.out.println("1입니다.");
			break;
		case 2 :
			System.out.println("2입니다.");
			break;
		case 10 :
			System.out.println("10입니다.");
			break;
				 // 의도적으로 멈추고 싶을 때 break를 입력합니다. 
			
		}
		
	}

}

 

만약 입력한 값이 case에 모두 해당하지 않을 경우 출력하기 위한 고정값으로 

default를 사용합니다. 이것은 case에 해당되는 값이 있어도 출력을 합니다. 단, break가 있으면 출력되지 않습니다. 

package day12;

public class Test03 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		// 조건 값 : 정수, 문자 그리고 문자열 중 어떤 값
		
		int condition = 2
				; 
		switch(condition) {
		case 1 :
			System.out.println("1입니다.");
		case 2 :
			System.out.println("2입니다.");
		case 10 :
			System.out.println("10입니다.");
		default :  // case에 해당하지 않는 경우 나머지 case는 이것으로.  
			System.out.println("case 가 없습니다.");
			
			
		}
		
	}

}

 

 

여기까지 확인을 했으니 다음 공부는 오후에 이어서 하겠습니당 

반응형