- Do it! 자바 프로그래밍 입문 온라인 강의를 수강하며 작성하였습니다.
- Section 0. 자바 기본 익히기
- 7강 "제어의 흐름 이해하기(1)"
- 조건문 > if문과 if-else문 > if - else if - else문 > 조건문과 조건 연산자 > switch - case문
if(조건문){
조건문이 참일 경우에 실행할 실행문;
}else{
조건문이 거짓일 경우에 실행할 실행문;
}
실행문이 한 줄일 경우 중괄호를 쓰지 않아도 되지만 가독성과 나중에 실행문이 추가될 경우를 위해 쓰는 것이 좋다고 한다.
public class IfExample1 {
public static void main(String[] args) {
int age = 2;
if(age >= 8) {
System.out.println("학교에 다닙니다.");
}else {
System.out.println("학교에 다니지 않습니다.");
}
}
}
(조건이 여러 개에 해당하는 경우에 사용)
if(조건1){
문장1;
}else if(조건2){
문장2;
}else if(조건3){
문장3;
}else{
문장4;
}
중간에 조건이 참인 경우가 발생하면 그 뒤쪽 else if문은 실행하지 않고 조건문을 벗어난다.
public class ifExample2 {
public static void main(String[] args) {
int age = 9;
int charge;
if(age < 8) {
charge = 1000;
System.out.println("취학 전 아동입니다.");
}else if(age < 14) {
charge = 2000;
System.out.println("초등학생입니다.");
}else if(age < 20) {
charge = 2000;
System.out.println("중,고등학생입니다.");
}else {
charge = 3000;
System.out.println("일반인 입니다.");
}
System.out.println("입장료는 " + charge + "원 입니다.");
}
}
else if 문으로 처리하지 않고 전부 if문으로 작성한다면 조건이 참일 때 조건문을 벗어나지 않고 그 다음 조건이 참인지 확인하기 때문에 "초등학생입니다."와 "중,고등학생입니다." 둘 다 출력된다.
if-else문 | 조건 연산자 |
---|---|
if (a > b) max = a; else max = b; | max = (a > b) ? a : b |
public class SwitchCase {
public static void main(String[] args) {
int rank = 1;
char medalColor;
switch (rank) {
case 1:
medalColor = 'G';
break;
case 2:
medalColor = 'S';
break;
case 3:
medalColor = 'B';
break;
default:
medalColor = 'A';
}
System.out.println(rank + "등 메달의 색깔은 " + medalColor + "입니다.");
}
}
각각의 case마다 break;를 넣어주지 않으면 해당하는 case가 있더라도 그 다음 case까지 실행된다.
(break;를 만날 때까지...)
이것을 이용해서 각 달에 몇 일씩 있는지 알아보는 코드를 작성해보았다.
public class SwitchCase2 {
public static void main(String[] args) {
int month = 8;
int day;
switch (month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
day = 31;
break;
case 2: day = 28; break;
case 4: case 6: case 9: case 11:
day = 30;
break;
default: day = 0;
}
System.out.println(month + "월은 " + day + "일 입니다.");
}
}
month는 8이고 case 8에는 break; 가 없으므로 그 뒤 case 10, case 12를 거쳐 day에 31이 대입된 후 break;를 만나 switch - case문을 벗어나게 된다.