본문 바로가기

자바스프링웹공부(2024)/자바

2024.08.01. 조건문(중첩 if문, switch_case, )

반응형

*중첩if문

- if문 블록내에서 또 다른 if문을 기술하는 것.
- 중첩 횟수에는 제한이 없음.
 

<기본 문법>
if(조건식1){
  
    if(조건식1-1){
  

    }   
} else {
  
}

Q. 점수에 따른 학점 판별하기

/*
		 학생점수(score)에 대한 학점(grade) 판별
		 A 학점 : 90 ~ 100점		 
		 B 학점 : 80 ~ 89점
		 C 학점 : 70 ~ 79점
		 D 학점 : 60 ~ 69점
		 F 학점 : 00 ~ 59점
		 그 외  : 점수입력오류 
*/
int score = 80;
String grade = "점수 입력 오류!";
if (0 <= score && score <= 100) { 	// 먼저 범위 입력부터 함!
	grade = "F";			// 범위 넘어서는 것은 F 학점으로 하니 코드가 줄어듦.
	if (score >= 90) {
		grade = "A";
	} else if (score >= 80) {
		grade = "B";
	} else if (score >= 70) {
		grade = "C";
	} else if (score >= 60) {
		grade = "D";
	} 
	grade += "학점";
} 
System.out.println(grade);

 


*switch문  (switch ~ case 문)

- if문과 유사하게 조건에 따른 실행문장을 달리하는 조건문
- if문과 달리 조건식이 정수값, 문자열, Enum 상수 중 하나의 결과가 와야함.
- case 문에는 조건식 판별 결과와 비교할 값을 사용하며 범위 지정이 불가능하고, 값만 사용가능
- case 문의 값은 중복될 수 없으며, 순서는 상관없음
- break문은 각 case 문의 영역을 구분하는 역할
  => 즉, 각 case 문의 마지막에 break문을 빼먹는 실수를 하면 안됨.
- case 문 실행 후 break 문을 사용하며 switch ~ case 문을 빠져나갈 수 없으며, break문이 없을 경우 조건과 상관없이 다른 case 문 또는 default 문을 모두 실행함(break문을 만나거나 switch ~ case문이 끝날때까지 실행)
 
 <기본문법>

switch(){
  	case 값1:
    	// 판별 변수가 값1과 일치할 경우 실행할 문장들
  		[break;]
  	case 값2:
  		// 판별 변수가 값2과 일치할 경우 실행할 문장들
  		[break;]
  	[default:] //일치하는 값이 없을때 도달하므로 값 없이 : 붙임
 }

* 오늘의 문제 *

Q .세 정수 n1,n2,n3 중 최대값을 출력하라.

int n1 = 23;
int n2 = 21;
int n3 = 10;

int max = 0;
if(n1 > n2 && n1 > n3) {
max = n1;
} else if (n2 > n1 && n2 > n3){
max = n2;
} else {
max = n3;
}
// ==> 이렇게하면 조건식이 계속 늘어나니까...

// 코드를 규칙성있게 줄일 수 있는 방법.
int max = n1; 
max = max > n2 ? max : n2; //n1이 크면 max에는 최대값이 담긴다. 
max = max > n3 ? max : n3;
max = max > n4 ? max : n4;
//이렇게하면 규칙이 나오기 때문에 for문을 돌려서 한줄로 해결도 가능하다.
반응형