JAVA 멍충이 탈출기 3

sein lee·2024년 4월 1일
0

java-study

목록 보기
5/12
post-thumbnail
post-custom-banner

조건문

if문 , switch문

if문

특정 조건이 참인지 확인하고 참일 경우에만 실행
<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("미성년자입니다.");
        }
    }
}

<결과>

else문

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("미성년자입니다.");//만족하는 조건이 없을 때 실행
 }
 }
}

<결과>

if문2 - else if

<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문3 - if문과 else if문

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문에서 실행 안됨");
}

Switch문

단순히 값이 같은지만 비교할 수 있다. (비교연산자 사용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);
    }
}

<결과>

자바 14 새로운 Switch문

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 문보다 간결한 코드 작성 가능

문제와 풀이

문제1

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입니다.");
//        }
    }
}

<결과>

문제2

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+"를 이용하세요.");
    }
}

<결과>

문제3

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 + "원입니다.");
//        }
    }
}

<결과>
업로드중..

문제4

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("'고질라'를 추천합니다.");
        }
    }
}

문제5

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);
    }
}

문제6

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 + "입니다.");
    }
}

문제7

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);
    }
}
profile
개발감자
post-custom-banner

0개의 댓글