조건문(Conditional Statement)

Joy🌱·2022년 12월 25일
0

☕ Java

목록 보기
9/40
post-thumbnail

💁‍ 조건문(Conditional Statement)이란,
주어진 조건을 비교 및 판단하여 그 조건에 만족할 경우 지정된 명령을 실행하고, 만족하지 않을 경우 다음 단계의 명령을 수행하도록 하는 제어문

👀 if

1) if문

◼ testSimpleIfStatement Class

public void testSimpleIfStatement() {
		
        // 정수 한 개를 입력 받아 짝수이면 출력, 아니면 출력 X
        
		Scanner sc = new Scanner(System.in);
        
		System.out.print("숫자 한개를 입력하세요 : ");
        >>> 개행되지않도록 print 사용
		int num = sc.nextInt(); 
        >>> 정수형태를 출력하기 위해 nextInt 사용
		
		if(num % 2 == 0) {
			System.out.println("짝수입니다.");
		}
		
		System.out.println("프로그램을 종료합니다."); 
	}

2) 중첩 if문

if문 안에 또 다른 조건을 사용하여 if문을 사용

◼ testNestedIfStatement Class

public void testNestedIfStatement( ) {
		
        // 정수 한 개를 입력 받아 양수인 경우에만 짝수인지 확인하고 짝수인 경우 출력, 
        // 둘 중 하나라도 해당하지 않으면 출력 X
        
		Scanner sc = new Scanner(System.in);
		
		System.out.print("숫자 한개를 입력하세요 : ");
		int num = sc.nextInt();
		
		if(num > 0) {
			if (num % 2 == 0) { 
				System.out.println("입력하신 숫자는 양수이면서 짝수입니다");
			}
		}
		System.out.println("프로그램을 종료합니다");
		}

👀 if - else

1) if - else문

◼ testSimpleIfElseStatement Class

public void testSimpleIfElseStatement() {
		
        // 정수 한 개를 입력 받아 그 수가 홀수이면 "입력하진 숫자는 홀수입니다."라고 출력,
        // 홀수가 아니면 "입력하신 숫자는 짝수입니다."라고 출력
        
		Scanner sc = new Scanner(System.in);
	
		System.out.print("정수 한 개를 입력하세요 : ");
		int num = sc.nextInt();

		if (num % 2 == 1) {
			System.out.println("입력하신 숫자는 홀수임다!");
		}
		else {
			System.out.println("입력하신 숫자는 짝수임다!");
		}
		
		System.out.println("프로그램 종료");
	}

2) 중첩 if - else문

if-else문 안에 또 다른 조건을 사용하여 if-else문을 사용

◼ testNestedIfElseStatement Class

	public void testNestedIfElseStatement() {

		// 정수 한 개를 입력 받아 양수이면 "입력하신 숫자는 양수입니다."라고 출력,
        // 음수이면 "입력하신 숫자는 음수입니다."를 출력
		// 단, 0이면 "0입니다"라고 출력
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("정수 한 개를 입력하세요 : ");
		int num = sc.nextInt();
		
		>>> 0인지 아닌지 조건 확인
		if(num != 0) {
			>>> 0이 아닌 경우 양수인지 음수인지 조건 확인
			if(num > 0) {
				System.out.println("입력하신 숫자는 양수입니다.");
			} else {
				System.out.println("입력하신 숫자는 음수입니다.");				
			}
		} else {
			>>> 0인 경우 출력할 내용
			System.out.println("입력하신 숫자는 0입니다.");
		}
		System.out.println("프로그램 종료");
	}

👀 if - else if - else

1) if - else if - else문

◼ testSimpleIfElseIfStatement Class

public void testSimpleIfElseIfStatement() {
		
		// 90점 이상 A, 80점 이상 90점 미만 B, 70점 이상 80점 미만 C, 60점 이상 70점 미만 D,
		// 60미만은 F로 점수에 따른 성적을 매김
		// 학생의 이름과 점수 입력 받기
        
		Scanner sc = new Scanner(System.in);
		
		System.out.print("학생의 이름을 입력하세요 : ");
		String name = sc.nextLine();
		System.out.print("점수를 입력하세요 : ");
		int score = sc.nextInt();
		
		>>> 학생의 등급을 저장하기 위한 변수 초기화 
		String grade = "";
		
		if (score >= 90) {
			grade = "A";
		} else if(score >= 80) { 
        >>> 90점 미만의 조건은 필요 X (이미 위의 if문에서 90점 이상의 학생들은 "A"출력)
			grade = "B";
		} else if(score >= 70) {
			grade = "C";
		} else if(score >= 60) {
			grade = "D";
		} else {
			grade = "F";
		}
		System.out.println(name + " 학생의 점수는 " + score + "점이고, 등급은 " + grade + "입니다!");
		
	}

2) 중첩 if - else if - else문

if-else if else 문 안에서 또 다른 조건을 사용하여 if문 / if-else문 / if-else if-else문을 사용

◼ testNestedIfElseStatement Class

public void testNestedIfElseStatement() {
		
		// 위의 메소드에서 추가적으로 95점, 85점, 75점, 65점 이상인 학생들의 등급에 + 붙여주기
        
		Scanner sc = new Scanner(System.in);
		
		System.out.print("학생의 이름을 입력하세요 : ");
		String name = sc.nextLine();
		System.out.print("점수를 입력하세요 : ");
		int score = sc.nextInt();
		
		>>> 학생의 등급을 저장하기 위한 변수 초기화
		String grade = "";
		
		if (score >= 90) {
			grade = "A";
			if(score >= 95) { 
            >>> 중첩 if문을 추가하여 90점 중에 95점 이상이면 "+"도 추가
				grade += "+";
                >>> '+='를 이용하여 문자에 직접 중첩할 수 있음
			}
		} else if(score >= 80) { 
			grade = "B";
			if(score >= 85) {
				grade += "+";
			}
		} else if(score >= 70) {
			grade = "C";
			if(score >= 75) {
				grade += "+";
			}
		} else if(score >= 60) {
			grade = "D";
			if(score >= 65) {
				grade += "+";
			}
		} else {
			grade = "F";
		}
		System.out.println(name + " 학생의 점수는 " + score + "점이고, 등급은 " + grade + "입니다!");
		
	}

◼ improveNestedIfElseIfStatement Class

public void improveNestedIfElseIfStatement() {
>>> 두번째 method와 같은 출력결과이지만 보다 더 간결하고 효율적
		
		// 바로 위에서 작성한 코드를 개선
        
		Scanner sc = new Scanner(System.in);
		
		System.out.print("학생의 이름을 입력하세요 : ");
		String name = sc.nextLine();
		System.out.print("점수를 입력하세요 : ");
		int score = sc.nextInt();
		
		>>> 학생의 등급을 저장하기 위한 변수 초기화
		String grade = "";
		
		if (score >= 90) {
			grade = "A";
		} else if(score >= 80) { 
			grade = "B";
		} else if(score >= 70) {
			grade = "C";
		} else if(score >= 60) {
			grade = "D";
		} else {
			grade = "F";
		}
		
		// 각 등급의 중간 점수 이상이면서 60점 이상인지, 또는 100점인 경우 "+" 추가
		if(score % 10 >= 5 && score >= 60 || score == 100) {
        >>> 점수를 10으로 나눴을 때의 나머지가 5이상 이면서(&&) 점수가 60. 또는(||) 점수가 100점
			grade += "+";
		}
		
		System.out.println(name + " 학생의 점수는 " + score + "점이고, 등급은 " + grade + "입니다!");
	}

👀 switch

◼ testSimpleSwitchStatement Class

public void testSimpleSwitchStatement() {
		
		// 정수 두 개와 연산 기호 문자를 입력받아 두 숫자의 연산 결과를 출력해보는 간단한 계산기
        
		Scanner sc = new Scanner(System.in);
        
		System.out.println("첫 번째 정수 입력 : " );
		int first = sc.nextInt();
		System.out.println("두 번째 정수 입력 : " );
		int second = sc.nextInt();
		System.out.println("연산 기호 입력(+, -, *, /, %) : ");
		char op = sc.next().charAt(0);
        >>> 문자를 출력하고 싶을 때, 문자열을 먼저 출력(sc.next()),
        >>> (.chatAt(0))을 이용해 문자열의 첫 번째 자리의 문자를 출력해냄
		
		>>> 연산의 결과를 저장할 변수
		int result = 0;
		
		>>> 콘솔에 입력할 연산 기호에 따라 달라지는 결과를 switch문으로 표현
		switch(op) {
		case '+' :
			result = first + second;
			break; 
            >>> case '+' 빠져나오는 역할
		case '-' :
			result = first - second;
			break; 
		case '*' :	
			result = first * second;
			break; 
		case '/' :	
			result = first / second;
			break; 
		case '%' :	
			result = first % second;
			break; 
			// 산술 연산 외의 다른 문자에 대한 처리는 생략하였음
		}
		System.out.println(first + " " + op + " " + second + " = " + result);
	}

📌 Ref.

* default문은 생략 가능하지만 생략하는 경우 주석으로 생략 이유를 작성해주는 것이 좋음
  ex) // 산술 연산 외의 다른 문자에 대한 처리는 생략하였음

◼ testSwitchVendingMachine Class

public void testSwitchVendingMachine() {
		
        // switch문을 이용한 문자열 값 비교 및 break에 대한 테스트
        
        Scanner sc = new Scanner(System.in);
        
		System.out.println("=============== 음료 자판기 ===============");
		System.out.println("      사이다   콜라   환타   박카스   핫식스     ");
		System.out.println("========================================");
		System.out.println("음료를 선택해주세요");
		String selectedDrink = sc.nextLine();
		
		>>> 원하는 음료에 맞는 가격을 저장할 변수 초기화
		int price = 0;
		
		switch(selectedDrink) {
		case "사이다" : 
        >>> 사이다는 콜라와 price가 같다면, 따로 price를 입력한 뒤 
        >>> break;를 사용하지 않아도 정상적으로 실행이 됨 (의도적인 break; 활용)
		case "콜라" : 
			price = 1000;
			break;
		case "환타" : 
			price = 1200;
			break;
		case "박카스" : 
			price = 1500;
			break;
		case "핫식스" : 
			price = 1800;
			break;
		}
		System.out.println(selectedDrink + "를 선택하셨습니다.");  
		System.out.println(price + "원을 투입해주세요!");  
	}

📌 Ref.

* JDK 1.7 이상부터는 switch문을 이용하여 문자열을 비교할 수 있음
* break를 사용하지 않으면 멈추지 않고 계속 실행 구문을 동작시킴

👀 Application for Conditional statement method

◼ Application Class

public class Application {

	public static void main(String[] args) {
		
		A_if a = new A_if(); 
		a.testSimpleIfStatement(); 
		a.testNestedIfStatement();
		
		B_ifElse b = new B_ifElse();
		b.testSimpleIfElseStatement();
        b.testNestedIfElseStatement();
		
		C_ifElseifElse c = new C_ifElseifElse(); 
		c.testSimpleIfElseIfStatement(); 
		c.testNestedIfElseStatement();
		c.improveNestedIfElseIfStatement();
		
		D_Switch d = new D_Switch();
		d.testSimpleSwitchStatement();
		d.testSwitchVendingMachine();

	}
profile
Tiny little habits make me

0개의 댓글

관련 채용 정보