Java/문법
Java 조건문 if-else, switch-case
ssury94
2024. 12. 15. 21:50
if-else문
// 가격이 3000원보다 싸면, "가격이 좋습니다."라고 출력하고
// 그렇지 않으면 "비싸네요"라고 출력하세요.
// ~라면, ~해라 < 조건문 (조건 + 액션)
// if (~라면){~해라} else {아니면 ~ 해라}
{} 코드로 블록 구분
if(price < 3000) {
System.out.println("가격이 좋습니다.");
} else {
System.out.println("비싸네요.");
}
조건 연산자- 조건식 ? 결과 1 : 결과 2; 로도 가능
가독성과 간결함 중 어느쪽이 우선일지 고려해서 선택하자
public class Test {
public static void main(String[] args) {
int price = 2000;
String massage = (price < 3000) ? "가격이 좋습니다." : "비싸네요.";
System.out.println(massage);
}
}
if-else if-else로 여러 조건을 표현할 수도 있다.
public class Test {
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 = 2500;
System.out.println("중,고등학생입니다.");
}else{
charge = 3000;
System.out.println("성인입니다.");
}
System.out.println("요금은 "+charge+"원 입니다.");
}
}
switch-case문
조건식(ex- num>3)이 아닌 특정한 값으로 변수가 정해져있는경우 그 값에 따라 여러 가지 경우를 처리하는 조건문
1등은 골드, 2등은 실버, 3등은 브론즈, 4등부턴 메달이 없다. 이걸 if-else문으로 작성해보면 아래와 같다.
public class Test {
public static void main(String[] args) {
int rank =1;
String madalColor;
if(rank==1) {
madalColor = "G";
}else if(rank==2){
madalColor = "S";
} else if (rank == 3) {
madalColor = "B";
}else {
madalColor = "none";
}
System.out.println(madalColor);
}
}
어째 한눈에 알아보기 힘들다!
if-else문은 조건이 많아질수록 {}블록도 많이 써야하고, 그만큼 코드가 길어진다.
이럴때는 switch - case문으로 작성해주자!
public class Test {
public static void main(String[] args) {
int rank =1;
String madalColor;
switch (rank){
case 1: madalColor= "G";
break;
case 2: madalColor= "S";
break;
case 3: madalColor= "B";
break;
default:madalColor="none";
}
System.out.println(madalColor);
}
}
여러 조건이 있어도 {}는 한번만 사용하기때문에 코드도 깔끔하고 가독성도 좋아진다.
case: ~break; 까지가 조건에 해당하는 문장
일치하는 case가 없으면 default코드가 수행된다.
같은 조건의 여러 케이스를 동시에 처리하기도 좋다.
package entity;
public class Date {
private int day;
private int month;
private int year;
private boolean isValid=true;
public Date() {
}
//MyDate(int day, int month, int year) 생성자
public Date(int day, int month, int year) {
setDay(day);
setMonth(month);
setYear(year);
}
//public boolean isValid() 메서드를 만들어 날짜가 유효한지 확인하기
public String isValid(){
if(isValid){
return "유효한 날짜입니다.";
}else {
return "유효하지 않은 날짜입니다.";
}
}
//1-30일까지인 달 : 4,6,9,11
//1-31일까지인 달 : 1,3,5,7,8,10,12
//2월 윤년 4년 29일, 나머지 28일
//달은 1-12월까지
public void setDay(int day) {
switch(month) {
case 4:case 6:case 9: case 11:
if(day < 0 || day > 30){
isValid=false;
}else {
this.day=day;
}
break;
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
if (day < 0 ||day > 31) {
isValid = false;
}else {
this.day=day;
}
case 2: //윤년설정
if ( ( year % 4 ==0 && year % 100 !=0 ) || year % 400 ==0){
if( day <0 || day > 29) {
isValid = false;
} else {
this.day=day;
}
} else {
if (day <0 || day >28) {
isValid = false;
}else {
this.day=day;
}
}
}
}
if문과 switch문의 차이점 체크
조건식: if 문은 boolean 표현식을 평가하지만, switch 문은 equality만 체크합니다.
타입: if 문은 다양한 타입의 변수를 평가할 수 있지만, switch 문은 정수, 문자, 열거형, 문자열만 지원합니다.
가독성과 유지보수: switch 문은 여러 개의 분기를 처리할 때 더 가독성이 좋고, 유지보수가 쉽습니다