Conditional statement (조건문)

Zino·2022년 12월 9일

Java

목록 보기
5/26
post-thumbnail

🔍 조건문

  • 프로그램 수행 흐름을 바꾸는 역할을 하는 제어문(Control Statement) 중 하나로,
    조건에 따라 다른 문장이 수행되도록 한다.

  • 자바에서 조건식의 결과는 반드시 true or flase이어야 한다.

제어문(Control Statement) : 프로그램의 흐림(flow)를 바꾸는 역할을 하는 문장들.
조건문은 조건에 따라 다른문장이, 반복문은 특정 문장들을 반복 수행.

📗 블럭{ }

  • 괄호{ }를 이용해서 여러 문장을 하나의 단위로 묶을 수 있는데, 이것을 블럭(block) 이라고 한다. 블럭은 {로 시작해서 } 로 끝나는데,} 다음에 문장의 끝을 의미하는 ;을 붙이지 않는다.
  • 블럭 내의 문장들은 tab 으로 들여쓰기를 해서 블럭 안에 속한 문장이라는 것을 알기 쉽게 해주는 것이 좋다.
  • 블럭 안에는 한 문장만 넣거나 아무런 문장을 넣지 않을 수 있다.

📖 종류

  • if문
  • if - else문
  • if - else if문
  • switch문

if문

  • 조건식이 true 일 때만 코드 수행

✍🏻 작성법

if(조건식){
			조건식이 true 일 때 수행될 코드
}

조건식의 결과 값이 true면 -> if문 내부 코드가 수행됨.
false면 실행하지 않음

📝 예제

public void ex1() {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("정수 입력 : ");
		int input = sc.nextInt();
		
		// 입력된 정수가 양수인지 검사
		if(input>0) {
			System.out.println("양수 입니다.");
		} 
		if(input<=0) {
			System.out.println("양수가 아닙니다.");
		}
}

if - esle문

  • 조건식 결과과 true면 if문, false면 else 구문이 수행됨 .

✍🏻 작성법

if(조건식){
조건식이 true일때 수행될 코드
} else {
조건식이 false일 때 수행될 코드
}
		

조건식의 결과 값이 true면 if 내의 코드가, false면 else 내의 코드가 수행됨

📝 예제


public void ex2() {
	//홀짝검사
	//입력받은 값이 홀인지 짝인지 출력
	Scanner sc = new Scanner(System.in);
	System.out.print("숫자를 입력하세요 : ");
	int input = sc.nextInt();
		
	if(0== input % 2) {
		System.out.println("짝수");
	}else {
		System.out.println("홀수");
	}
			
}
	

if - esle if문

  • 처리해야 할 경우의 수가 셋 이상인 경우에는, 한 문장에 여러 개의 조건식을 쓸 수 있는 if - else if문을 사용한다.

✍🏻 작성법

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

조건식1의 결과 값이 true면 if문 내 코드 수행
조건식2의 결과 값이 true면 else if 내 코드 수행
모두 false면 else 내 코드 수행
💡 if는 true, false와 상관 없이 조건절 실행, if~else if~else는 조건문이 true면 이후 조건은 실행하지 않음

📝 예제 1

public void ex3() {
	// 달(month)를 입력받아 해달달에 맞는 계절 출력
		
	Scanner sc = new Scanner(System.in);
	System.out.print("달 입력 : ");
	int month = sc.nextInt();
		
		
	//사용자에게 온도를 받음
	System.out.print("온도 입력 : ");
	int temperature = sc.nextInt();
		
	String season;
	//봄: 3, 4, 5
	//여름: 6, 7, 8
	//가을: 9, 10, 11
	//겨울: 12, 1, 2
		
	if(month == 3 || month == 4 || month == 5 ) {
			
	season = "봄";
			
	} else if(month >= 6 && month <= 8 ) {
		season = "여름";
			
		if( temperature >= 35) {
			//season = season + "";
			//season = "여름" + "폭염 경보"
			season +=" 폭염 경보";
			}else if(temperature >=33) {
			season += "폭염 주의보"; 
			}
			
	} else if(month >=9 && month <=11) {
			
		season = "가을";
			
	} else if (month == 12 || month == 1 || month ==2 ){
			
		season = "겨울";
			
	} else {
			
		season = "해당하는 계절 없음 ";
			
	}
		System.out.println(season);
}

📝 예제 2

public void ex4() {
	//나이를 입력 받아
	//13세 이하면 "어린이 입니다"
	//13서 초과 19세 이하면 : "청소년 입니다."
	//19세 초과 시 : "성인 입니다." 출력		
	Scanner sc = new Scanner(System.in);
	System.out.print("나이 입력 : ");
	int age = sc.nextInt();
		
	if(age <= 13) {
		System.out.println("어린이 입니다");
	}else if(age >19) {
		System.out.println("성인 입니다");			
	}else {
		System.out.println("청소년 입니다");
	}
}

📝 예제 3

public void ex5() {
	//점수(100점 만점)을 입력받아
	//90점 이상 : A
	//80점 이상 90점 미만 : B
	//70점 이상 80점 미만: C
	//60점 이상 70점 미만 : D
	//60점 미만 : F
	//0점 미만, 100 초과 : "잘못 입력하셨습니다"
		
		
	Scanner sc = new Scanner(System.in);
	System.out.print("점수를 입력하세요: ");
	int score = sc.nextInt();
		
	String grade ; //결과를 담을 String 변수 선언
		
	if(score < 0 || score > 100) {
		grade = "잘못입력";
	}else 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";
	}
	System.out.println(grade);
}

📝 예제 4

public void ex6() {
	//놀이기구 탑승 제한 검사 프로그램
	//조건 - 나이 : 12세 이상 
	//    -  키  : 140.0cm 이상
		
	//나이를 0~100세 사이로 입력하지 않은 경우 :"나이를 잘못 입력 하셨습니다."
	//키를 0~250.0cm 사이로 입력하지 않은 경우 :"키를 잘못 입력 하셨습니다."
	//-> 입력이 되자 마자 검사를 진행하여 잘못된 경우 프로그램 종료 
		
	// 나이 O , 키 X : "나이는 적절하나, 키가 적절치 않음";
	// 나이 X , 키 O : "키는 적절하나, 나이는 적절치 않음";
	// 나이 X , 키 X : "나이와 키 모두 적절치 않음";
	// 나이 O , 키 O : "탑승가능";
	Scanner sc = new Scanner(System.in);
	System.out.print("나이를 입력하세요 : ");
	int age = sc.nextInt();
		
	String result ; //결과 담을 변수 선언 . 초기화 X 
		
	if(age >100 || age <0 ) {
		result =" 나이를 잘못 입력 하셨습니다.";
	}else {
		System.out.print("키를 입력하세요 : ");
		double height = sc.nextDouble();
		
		if(height >250.0 || height <0) {
			result =" 키를 잘못 입력 하셨습니다.";
	    } else {
			//키를 잘 입력한 경우
				
			if(age < 12 && height  >= 140.0) {	
				result = "키는 적절하나, 나이는 적절치않음";
			} else if(age >= 12 && height <140.0) {	
				result = "나이는 적절하나, 키는 적절치 않음";	
			} else if(age <12 && height <140.0){	
				result = "나이와 키 모두 적절치 않음";	
			} else {
				result = "탑승가능";
			}
				
		}
		
	}
	System.out.println(result);
}

switch문

  • 식 하나의 결과로 많은 경우의 수를 처리할 때 사용하는 조건문.
    -> 식의 결과로 얻은 값과 같은 case 구문이 실행된다.

✍🏻 작성법

switch(){

case 결과값 1 : 수행코드1; break;
case 결과값 2 : 수행코드2; break;
case 결과값 3 : 수행코드3; break;
...
default : case를 모두 만족하지 않을 경우 수행하는 코드 (==else)
}

조건식 하나로 많은 경우의 수 처리할 때 사용하며, 이때 조건식의 결과는 정수 또는 문자, 문자열
조건식의 결과 값과 일치하는 case문으로 이동, default문은 일치하는 case문이 없을 때 수행(= else )

📝 예제 1

public void ex1(){
	//키보드로 정수를 입력 받아
	//1 이면 "발간색"
	//2 이면 "주황색"
	//3 이면 "노란색"
	//4 이면 "초록색"
	//1~4 사이 숫자가 아니면 "흰색" 출력
		
	Scanner sc = new Scanner(System.in);
	System.out.print("정수입력: ");
	int input = sc.nextInt();
		
	String result;
		
	/*if(input == 1 ){
		result = "빨강";
	}else if(input == 2) {
		result = "주황";
	}else if(input == 3) {
		result = "노랑";
	}else if(input == 4) {
		result = "초록";
	}else {
		result = "흰색";
	}
		
	System.out.println(result);*/
		
	switch(input) {
		
		
	case 1 : result = "빨강"; break;
	case 2 : result = "주황"; break;
	case 3 : result = "노랑"; break;
	case 4 : result = "초록"; break;
	default : result = "흰색"; break;
	}
		
	System.out.println(result);
				
}

📝 예제 2

public void ex2() {
		//봄: 3, 4, 5
		//여름: 6, 7, 8
		//가을: 9, 10, 11
		//겨울: 12, 1, 2
		Scanner sc = new Scanner(System.in);
		System.out.print("달 입력: ");
		int month = sc.nextInt();
		
		String result;
		
		switch(month){
		case 3: case 4: case 5: result = "봄"; break;
		case 6: case 7: case 8: result = "여름"; break;
		case 9: case 10: case 11: result = "가을"; break;
		case 12: case 1: case 2: result = "겨울"; break;
		default : result = "잘못입력하셨습니다. "; break;
		}
		System.out.println(result);
	}

📝 예제 3

public void ex3() {
		
		//연산자(+ - * / %)
		//정수 1: 5
		//정수 2: 10
		//연산자 : *
		//계산결과 : 5 * 10 = 50
		//0으로 나눌 수 없습니다.
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("정수 1: ");
		int num1 = sc.nextInt();
		
		System.out.print("정수 2: ");
		int num2 = sc.nextInt();
		
		System.out.print("연산자: ");
		String op = sc.next();
		
		switch(op) {
		case "+": System.out.printf("%d + %d = %d\n", num1, num2, num1 + num2);
		break;
		case "/":
			if(num2 == 0) {
				System.out.println("0으로 못나눔");
			}else {
				System.out.printf("%d / %d = %d\n",	num1, num2, num1 / num2);
			}
			break;
		case "*": System.out.printf("%d * %d = %d\n", num1, num2, num1 * num2);
		}
		
		
	}
profile
Willingness to be a fool!

0개의 댓글