본문 바로가기
Language/JAVA

[JAVA] 조건문 // if문 switch문

by 아이엠제니 2021. 9. 14.

 


 

 

코드 실행 흐름 제어

  • 자바 프로그램을 시작하면 main() 메소드의 시작 중괄호 { 에서 시작해서 끝 중괄호 } 까지 위에서부터 아래로 실행하는 흐름올 가지고 있음
  • 이러한 실행 흐름을 개발자가 원하는 방향으로 바꾸 수 있도록 해주는 것이 흐름 제어문
  • 흐름 제어문은 제어문이라고 한다.
    제어문은 조건식과 중괄호 {} 블록으로 구성
    조건식의 연산 결과에 따라 블록 내부의 실행 여부가 결정됨
  • 제어문의 종류는 조건문과 반복문이 있음
    조건문: if문, switch문
    반복문: for문, while문, do-while문
  • 제어문 블록 내부에는 또 다른 제어문을 사용할 수 있음

 

 


조건문(if문, switch문)

if문

  • 조건식의 결과에 따라 블록 실행 여부가 결정됨
  • 조건식에는 true 또는 false 값을 산출할 수 있는 연산식이나, boolean 변수가 올 수 있음
  • 조건식이 true이면 블록을 실행하고 false이면 블록을 실행하지 않음
package thisisjava.chap04.num02;

public class IfExample {
    public static void main(String[] args) {
        int score = 93;

        if (score >= 90) {
            System.out.println("점수가 90보다 큽니다");
            System.out.println("등급은 A 입니다");
        }

        if (score < 90)
        System.out.println("점수가 90보다 작습니다");
        System.out.println("등급은 B 입니다"); //if문과는 상관없는 실행문
    }
}

> 조건식이 true가 될 때 실행해야 할 문장이 하나밖에 없다면 생략할 수 있다

> 중괄호 블록을 작성하지 않으면 코드의 가독성(코드 해석)이 좋지 않고, 버그 발생의 원인이 될 수 있음

> 그래서 중괄호 블록 {} 생략하지 않고 작성하는 것을 추천

 

 

if-else문

  • 조건식의 결과에 따라 실행 블록을 선택
  • if문의 조건식이 true이면 if문의 블록이 실행되고, 조건식이 false이면 else 블록이 실행됨
package thisisjava.chap04.num02;

public class IfElseExample {
    public static void main(String[] args) {
        int score = 85;

        if (score >= 90) {
            System.out.println("점수가 90보다 큽니다");
            System.out.println("등급은 A입니다");
        } else {
            System.out.println("점수가 90보다 작습니다");
            System.out.println("등급은 B입니다");
        }
    }
}

 

 

if-else if-else문

  • 모든 조건식이 false일 경우 else 블록을 실행하고 if문을 벗어나게 됨
package thisisjava.chap04.num02;

public class IfElseIfElseExample {
    public static void main(String[] args) {
        int score = 75;

        if (score >= 90) {
            System.out.println("점수가 100-90입니다");
            System.out.println("등급은 A입니다");
        } else if (score >= 80) {
            System.out.println("점수가 80-89입니다");
            System.out.println("등급은 B입니다");
        } else if (score >= 70) {
            System.out.println("점수가 70-79입니다");
            System.out.println("등급은 C입니다");
        } else {
            System.out.println("점수가 70 미만입니다");
            System.out.println("등급은 D입니다");
        }
    }
}

 

 

주사위

  • 주사위를 굴려서 나올 수 있는 1,2,3,4,5,6 중에서 하나의 수를 뽑아서 출력하는 프로그램 작성
  • Math.random() 메소드를 활용
    0.0과 1.0 사이에 속하는 double 타입의 난수 하나를 리턴
    0.0은 범위에 포함되고 1.0은 포함되지 않음
// 비교연산자로 표현
0.0 <= Math.random() < 1.0

// 각 변에 10을 곱해 double 타입의 값을 얻음
0.0*10 <= Math random()*10 < 1.0*10
  0.0                                 10.0

// 각 변을 int 타입으로 강제 타입 변환
(int) 0.0 < = (int) (Math.random()*10) < (int) 10.0
   (0)              (0,1,2,3,4,5,6,7,8,9)           (10)

// 이 상태에서 각 변에 1을 더하면 1~10까지 정수 중에서 하나의 정수를 얻게 됨
0+1 <= (int) (Math.random()*10)+1 < 10+1
   (1)        (1,2,3,4,5,6,7,8,9,10)            (11)

// start부터 시작하는 n개의 정수 중에서 임의의 정수 하나를 얻기 위한 연산식
int num = (int) (Math.random()*n) + start;

// 주사위 번호 하나를 뽑기 위한 연산식
int num = (int) (Math.random()*6) + 1;

// 로또 번호 하나를 위해 다음 연산식 사용
int num = (int) (Math.random()*45) + 1;

 

package thisisjava.chap04.num02;

public class IfDiceExample {
    public static void main(String[] args) {
        int num = (int) (Math.random() * 6) + 1;

        if (num == 1) {
            System.out.println("1번이 나왔습니다");
        } else if (num == 2) {
            System.out.println("2번이 나왔습니다");
        } else if (num == 3) {
            System.out.println("3번이 나왔습니다");
        } else if (num == 4) {
            System.out.println("4번이 나왔습니다");
        } else if (num == 5) {
            System.out.println("5번이 나왔습니다");
        } else {
            System.out.println("6번이 나왔습니다");
        }
    }
}

 

 

중첩 if문

  • if문의 블록 내부에는 또 다른 if문을 사용할 수 있음
package thisisjava.chap04.num02;

public class IfNestedExample {
    public static void main(String[] args) {
        int score = (int) (Math.random() * 20) + 81;
        System.out.println("점수: " + score);

        String grade;

        if (score >= 90) {
            if (score >= 95) {
                grade = "A+";
            } else {
                grade = "A";
            }
        } else {
            if (score >= 85) {
                grade = "B+";
            } else {
                grade = "B";
            }
        }
        System.out.println("학점: " + grade);
    }
}

 

 

switch문

  • if문과 마찬가지로 조건 제어문
  • 변수가 어떤 값을 갖느냐에 따라 실행문이 선택됨
  • if문보다 코드가 간결
package thisisjava.chap04.num02;

public class SwitchExample {
    public static void main(String[] args) {
        int num = (int) (Math.random() * 6) + 1;

        switch (num) {
            case 1:
                System.out.println("1번이 나왔습니다");
                break;
            case 2:
                System.out.println("2번이 나왔습니다");
                break;
            case 3:
                System.out.println("3번이 나왔습니다");
                break;
            case 4:
                System.out.println("4번이 나왔습니다");
                break;
            case 5:
                System.out.println("5번이 나왔습니다");
                break;
            default:
                System.out.println("6번이 나왔습니다");
                break;
        }
    }
}

> case 끝에 break가 붙어 있는 이유는 다음 case를 실행하지 말고, switch문을 빠져나가기 위해서임

 

// break문이 없는 case

package thisisjava.chap04.num02;

public class SwitchNoBreakCaseExample {
    public static void main(String[] args) {
        int time = (int) (Math.random() * 4) + 8;
        System.out.println("[현재시간: " + time + " 시]");

        switch (time) {
            case 8:
                System.out.println("출근합니다");
            case 9:
                System.out.println("회의를 합니다");
            case 10:
                System.out.println("업무를 봅니다");
            default:
                System.out.println("외근을 나갑니다");
        }
    }
}

> break가 없다면 다음 case가 연달아 실행됨

> case 값과는 상관없이 실행됨

 

// char 타입의 Switch문

package thisisjava.chap04.num02;

public class SwitchCharExample {
    public static void main(String[] args) {
        char grade = 'B';

        switch (grade) {
            case 'A':
            case 'a':
                System.out.println("우수 회원입니다");
                break;
            case 'B':
            case 'b':
                System.out.println("일반 회원입니다");
                break;
            default:
                System.out.println("손님입니다");
        }
    }
}

 

// String 타입의 switch문

package thisisjava.chap04.num02;

public class SwitchStringExample {
    public static void main(String[] args) {
        String position = "과장";

        switch (position) {
            case "부장":
                System.out.println("700만원");
                break;
            case "과장":
                System.out.println("500만원");
                break;
            default:
                System.out.println("300만원");
        }
    }
}

> 자바 7부터는 String 타입의 변수도 올 수 있음

 

 

 

'이것이 자바다' 공부 기록
300x250