public class Switch {
public static void main(String[] args) {
int grade = 2;
int coupon;
if (grade == 1){
coupon = 1000;
} else if (grade == 2) {
coupon = 2000;
} else if (grade == 3) {
coupon = 3000;
} else {
coupon = 5000;
}
System.out.println("발급 받은 쿠폰" + coupon);
}
}
위 코드를 switch문으로 변경해보자
public class Switch2 {
public static void main(String[] args) {
int grade = 2;
int coupon;
switch (grade) {
case 1:
coupon = 1000;
break;
case 2:
coupon = 2000;
break;
case 3:
coupon = 3000;
break;
default:
coupon = 5000;
}
System.out.println(coupon);
}
}
둘 차이점을 비교 하자면, if문은 비교 연산자를 사용 할 수 있지만, switch문은 단순히 값이 같은지만 비교 가능
switch (조건식) {
case value1:
// 조건식의 결과 값이 value1일 때 실행되는 코드
break;
case value2:
// 조건식의 결과 값이 value2일 때 실행되는 코드
break;
default:
// 조건식의 결과 값이 위의 어떤 값에도 해당하지 않을 때 실행되는 코드
}
조건식 결과 값이 어떤 case의 값과 일치하면 case 해당 값 실행
break는 탈출 => 없으면 case이후 모든 case들이 순서대로 다 실행
default는 조건식의 결과 값이 모든 case 값과 일치하지 않을때 실행
break문 없으면?
2,3등급은 동일한 쿠폰을 주고 싶다면?
public class Switch3 {
public static void main(String[] args) {
int grade = 2;
int coupon;
switch (grade) {
case 1:
coupon = 1000;
break;
case 2:
case 3:
coupon = 3000;
break;
default:
coupon = 5000;
}
System.out.println(coupon);
}
}
switch문은 조건식이 특정 case와 같은지 check 할 수 있다.
+) 새로운 switch문 개발... (어색하다)
public class Switch4 {
public static void main(String[] args) {
int grade = 2;
int coupon = switch (grade){
case 1 -> 1000;
case 2 -> 2000;
case 3 -> 3000;
default -> 500;
};
}
}
삼항연산자
public class CondOp1 {
public static void main(String[] args) {
int age = 18;
String status;
if (age >= 18){
status = "성인";
} else {
status = "미성년자";
}
System.out.println("age " + age + " status " + status);
}
}
단순히 참 거짓에 따라서 값을 구하는 경우 삼항연산자 또는 조건 연산자라 불리는 ?: 연산자를 사용
public class CondOp2 {
public static void main(String[] args) {
int age = 18;
String status = (age >= 18) ? "성인" : "미성년자";
System.out.println("age " + age + " status " + status);
}
}
삼항 연산자
(조건) ? 참_표현식 : 거짓_표현식
삼항 연산자는 항이 3개. 조건, 참, 거짓
조건에 만족하면 참 표현식이 실행, 만족하지 않으면 거짓 표현식이 실행
조건, switch, 삼항연산자 연습문제
public class ScoreEx {
public static void main(String[] args) {
int score = 85;
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");
}
}
}
public class DistanceEx {
public static void main(String[] args) {
int distance = 25;
if (distance <= 1){
System.out.println("도보를 이용하세요");
} else if (distance <= 10){
System.out.println("자전거를 이용하세요");
} else if (distance <= 100){
System.out.println("자동차 이용하세요");
} else {
System.out.println("비행기 이용하세요");
}
}
}
public class ExchangeRateEx {
public static void main(String[] args) {
int dollar = 10;
if (dollar < 0){
System.out.println("잘못된 금액입니다");
} else if (dollar == 0){
System.out.println("환전할 금액이 없습니다.");
} else {
int won = dollar * 1300;
System.out.println("환전 금액은 " + won + " 원 입니다");
}
}
}
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("고질라 추천");
}
}
}
public class GradeSwitchEx {
public static void main(String[] args) {
String grade = "B";
switch (grade){
case "A":
System.out.println("탁월한 성적");
break;
case "B":
System.out.println("좋은 성과");
break;
case "C":
System.out.println("준수한 성과");
break;
case "D":
System.out.println("향상이 필요합니다");
break;
case "F":
System.out.println("불합격");
break;
default:
System.out.println("잘못된 학점");
}
}
}
public class CondOpEx {
public static void main(String[] args) {
int a = 10;
int b = 20;
int max = (a > b) ? a : b;
System.out.println("더 큰 숫자는 " + max);
}
}