if문 , switch문
특정 조건이 참인지 확인하고 참일 경우에만 실행
<If1.java>
package cond;
public class If1 {
public static void main(String[] args) {
int age = 20; //사용자 나이
if (age >= 18) {
System.out.println("성인입니다.");
}
if (age < 18) {
System.out.println("미성년자입니다.");
}
}
}
<결과>
if 문에서 만족하는 조건이 없을 때 실행하는
<If2.java>
package cond;
public class If2 {
public static void main(String[] args) {
int age = 20; // 사용자의 나이
if (age >= 18) {
System.out.println("성인입니다."); //참일 때 실행
} else {
System.out.println("미성년자입니다.");//만족하는 조건이 없을 때 실행
}
}
}
<결과>
<If3.java>
package cond;
public class If3 {
public static void main(String[] args) {
int age = 14;
if(age <= 7) { //~7: 미취학
System.out.println("미취학");
}
if(age >= 8 && age <= 13) { //8~13: 초등학생
System.out.println("초등학생");
}
if(age >= 14 && age <= 16) { //14~16: 중학생
System.out.println("중학생");
}
if(age >= 17 && age <= 19) { //17~19: 고등학생
System.out.println("고등학생");
}
if(age >= 20) { //20~: 성인
System.out.println("성인");
}
}
}
<결과>
단점 : 불필요한 조건 검사 , 코드 효율성
=> else if 를 사용하여 단점을 보완하자.
<If4.java>
package cond;
public class If4 {
public static void main(String[] args) {
int age = 14;
if(age <= 7) { //~7: 미취학
System.out.println("미취학");
} else if(age <= 13) { //8~13: 초등학생
System.out.println("초등학생");
} else if(age <= 16) { //14~16: 중학생
System.out.println("중학생");
} else if(age <= 19) { //17~19: 고등학생
System.out.println("고등학생");
} else { //20~: 성인
System.out.println("성인");
}
}
}
<결과>
if 문에 else if 를 함께 사용하는 것은 서로 연관된 조건일 때 사용한다. 그런데 서로 관련이 없는 독립 조건이면
else if 를 사용하지 않고 if 문을 각각 따로 사용해야 한다.
// 예시1. if-else 사용: 서로 연관된 조건이어서, 하나로 묶을 때
if (condition1) {
// 작업1 수행
} else if (condition2) {
// 작업2 수행
}
// 예시2. if 각각 사용: 독립 조건일 때
if (condition1) {
// 작업1 수행
}
if (condition2) {
// 작업2 수행
}
예시 1은 작업1, 작업2 둘중 하나만 수행, 예시2는 조건만 맞다면 둘 다 수행
<If5.java>
package cond;
public class If5 {
public static void main(String[] args) {
int price =10000;
int age = 10;
int discount =0 ;
if(price >= 10000){
discount = discount +1000;
}
if(age <= 10){
discount = discount + 1000;
}
System.out.println("총 금액 : "+ price);
System.out.println("총 할인금액 : " + discount);
}
}
<결과>
else if 를 사용하면 안된다.
if문의 {} 중괄호 생략 가능
else if, else 도 마찬가지
if (true)
System.out.println("if문에서 실행됨");
if (true)
System.out.println("if문에서 실행됨");
System.out.println("if문에서 실행 안됨");
=> if문에서 실행됨만 실행
=> 둘다 실행되게 하려면 중괄호 사용
if (true) {
System.out.println("if문에서 실행됨");
System.out.println("if문에서 실행 안됨");
}
단순히 값이 같은지만 비교할 수 있다. (비교연산자 사용X)
<Switch1.java>에서 작성한 것을 switch문으로 바꿔보자
<Switch1.java>
package cond;
public class SwitchIf1 {
public static void main(String[] args) {
int grade =5;
int coupon = 0;
if(grade==1){
coupon = 1000;
} else if (grade == 2) {
coupon = 2000;
} else if (grade==3) {
coupon = 3000;
}else coupon=500;
System.out.println("발급받은 쿠폰 : " + coupon);
}
}
<Switch2.java>
package cond;
public class Switch2 {
public static void main(String[] args) {
int grade = 5;
int coupon = 0;
switch(grade){
case 1 :
coupon=1000;
break;
case 2 :
coupon=2000;
break;
case 3 :
coupon=3000;
break;
default:
coupon=500;
}
System.out.println("발급받은 쿠폰 : " + coupon);
}
}
break : 현재 실행중인 코드를 끝내고 switch문을 빠져나가게 한다.
default : 조건식의 결과값이 모든 case와 일치하지 않을 때 실행 (=else)
** break 문이 없을 때?
package cond;
public class Switch2 {
public static void main(String[] args) {
int grade = 5;
int coupon = 0;
switch(grade){
case 1 :
coupon=1000;
break;
case 2 :
coupon=2000;
break;
case 3 :
coupon=3000;
break;
default:
coupon=500;
}
System.out.println("발급받은 쿠폰 : " + coupon);
}
}
<결과>
package cond;
public class Switch4 {
public static void main(String[] args) {
//grade 1:1000, 2:2000, 3:3000, 나머지: 500
int grade = 2;
int coupon = switch (grade) {
case 1 -> 1000;
case 2 -> 2000;
case 3 -> 3000;
default -> 500;
};
System.out.println("발급받은 쿠폰 " + coupon);
}
}
-> 를 사용.
선택된 데이터를 반환할 수 있다.
단순히 참과 거짓에 따라서 특정 값을 구하는 경우 삼항 연산자 또는 조건 연산자라고 불리는 ?: 연산자를 사용
할 수 있다.
(조건) ? 참표현식 : 거짓표현식
package cond;
public class CondOp1 {
public static void main(String[] args) {
int age = 18;
String status = (age >= 18) ? "성인" : "미성년자";
System.out.println("age = " + age + " status = " + status);
}
}
=> if 문보다 간결한 코드 작성 가능
package cond.ex;
public class ScoreEx {
public static void main(String[] args) {
int score = 78;
String grade ;
if(score >= 90) grade = "A";
else if (score>=80 && score<90) grade = "B";
else if (score>=70 && score<80) grade = "C";
else if (score>=60 && score<70) grade = "D";
else grade= "D";
System.out.println("score : " +score);
System.out.println("학점은 " + grade + "입니다.");
//풀이
// if (score >= 90) {
// System.out.println("학점은 A입니다.");
// } else if (score >= 80) {
// System.out.println("학점은 B입니다.");
// } else if (score >= 70) {
// System.out.println("학점은 C입니다.");
// } else if (score >= 60) {
// System.out.println("학점은 D입니다.");
// } else {
// System.out.println("학점은 F입니다.");
// }
}
}
<결과>
package cond.ex;
public class DistanceEx {
public static void main(String[] args) {
int distance =6;
String vehicle ;
if(distance<=1) vehicle="도보";
else if (distance<=10) vehicle="자전거";
else if (distance<=100) vehicle="자동차";
else vehicle="비행기";
System.out.println("distance: " + distance);
System.out.println(vehicle+"를 이용하세요.");
}
}
<결과>
package cond.ex;
public class ExchangeRateEx {
public static void main(String[] args) {
int dollar =10;
int rate = 1300;
if(dollar<0) System.out.println("잘못된 금액입니다.");
else if(dollar==0) System.out.println("환전할 금액이 없습니다.");
else if(dollar>0) System.out.println("환전 금액은"+ dollar*rate + "원 입니다.");
//풀이
// if (dollar < 0) {
// System.out.println("잘못된 금액입니다.");
// } else if (dollar == 0) {
// System.out.println("환전할 금액이 없습니다.");
// } else {
// int won = dollar * 1300;
// System.out.println("환전 금액은 " + won + "원입니다.");
// }
}
}
<결과>
package cond.ex;
public class MoveRateEx {
public static void main(String[] args) {
double rating = 7.1;
if (rating <= 9) {
System.out.println("'어바웃타임'을 추천합니다.");
}
if (rating <= 8) {
System.out.println("'토이 스토리'를 추천합니다.");
}
if (rating <= 7) {
System.out.println("'고질라'를 추천합니다.");
}
}
}
package cond.ex;
public class GradeSwitchEx {
public static void main(String[] args) {
String grade ="F";
String comment = switch(grade){
case "A" -> "탁월한 성과입니다!";
case "B" -> "좋은 성과입니다!";
case "C" -> "준수한 성과입니다!";
case "D" -> "향상이 필요합니다.";
case "F" -> "불합격입니다.";
default -> "잘못된 학점입니다.";
};
System.out.println(comment);
}
}
package cond.ex;
public class CondOpEx {
public static void main(String[] args) {
int a = 10;
int b = 20;
int big = (a>b) ? a : b;
System.out.println("더 큰 숫자는" + big + "입니다.");
}
}
package cond.ex;
public class EvenOddEx {
public static void main(String[] args) {
int x = 6;
String type = (x%2==0) ? "짝수" : "홀수";
System.out.println("x = "+ x + ", " +type);
}
}