[Java] 제어문

2020. 12. 5. 01:03·Java&Spring/STUDY HALLE

Java에서 코드의 흐름을 통제하는 방법에는 두가지가 있다.

바로 선택문과 반복문인데 이 두가지를 통해 프로그램의 실행 흐름을 조작하는 방법에 대해서 알아보도록 하자.

1. 선택문

if문

if

if (inputNumber > 0) {
    System.out.println("양수입니다.");
}

if 우측의 괄호에 참, 거짓을 구분할 수 있는 판별식이 들어가고 해당 판별식이 참이라면 그 후에 이어지는 중괄호에 있는 문장을 읽어 실행한다.


else

if (inputNumber > 0) {
    System.out.println("양수입니다.");
} else {
    System.out.println("양수가 아닙니다.");
}

else 의 의미는 위에 해당하는 조건식의 !연산을 한 결과가 참이면 실행한다는 의미이다. 위의 문장을 해석하면 다음과 같다.

if (!(inputNumber > 0)) {
    System.out.println("양수가 아닙니다.");
}

if (inputNumber > 0) {
    System.out.println("양수입니다.");
}

else if

if (inputNumber > 0) {
    System.out.println("양수 입니다.");
} else if (inputNumber < 0) {
    System.out.println("음수 입니다.");
} else {
    System.out.println("양수도 음수도 아닙니다.");
}

else if 의 의미는 위에서 판별한 모든 판별식이 거짓이고 현재의 if문에 해당하는 판별식이 참이라면 블록에 있는 코드를 실행한다는 뜻이다. 위의 문장을 해석하면 다음과 같다.

if (!(inputNumber > 0) && !(inputNumber < 0)) {
    System.out.println("양수도 음수도 아닙니다.");
}

if (!(inputNumber > 0) && (inputNumber < 0)) {
    System.out.println("음수입니다.");
}

if (inputNumber > 0) {
    System.out.println("양수입니다.");
}



switch-case문

기존의 switch-case문

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int inputNumber = Integer.parseInt(br.readLine());

        switch (inputNumber) {
            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;
            default:
                System.out.println("1,2,3,4 가 아닙니다.");
        }

    }
}

입력받은 값이 해당하는 case로 찾아간 후 아래로의 모든 내용을 읽는다. 그래서 case에 해당하는 문장이 모두 끝났을 경우 break를 해주지 않으면 아래쪽에 해당하는 문장들도 전부 실행되어버린다. default는 위에 case에 해당하는 모든 문장이 전부 아닐 때 default의 문장을 읽어들인다.

추가된 switch-case문

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int inputNumber = Integer.parseInt(br.readLine());

        switch (inputNumber) {
            case 1 -> System.out.println("1입니다.");
            case 2 -> System.out.println("2입니다.");
            case 3 -> System.out.println("3입니다.");
            case 4 -> System.out.println("4입니다.");
            default -> System.out.println("1,2,3,4 가 아닙니다.");
        }

    }
}

->연산자를 통해서 case에 해당하는 문장을 실행하는 형식으로 변경되었다. 따로 break를 적지 않아도 된다.

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int inputNumber = Integer.parseInt(br.readLine());

        String string = switch (inputNumber) {
            case 1 -> {
                System.out.println("1입니다.");
                yield "1";
            }
            case 2 -> "2입니다.";
            case 3 -> "3입니다.";
            case 4 -> "4입니다.";
            default -> "1,2,3,4 가 아닙니다.";
        };

    }
}

다음과 같이 {}를 사용해서 내부에 로직을 작성할 수고 있고,
yield를 사용해서 원하는 값을 리턴할 수도 있다.
{}를 사용하지 않으면 바로 해당하는 값을 리턴할 수 있다.



2. 반복문

while문

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int inputNumber = Integer.parseInt(br.readLine());

        while (inputNumber < 10) {
            System.out.println("현재 숫자는 " + inputNumber + "입니다.");
            inputNumber++;
        }

    }
}

while 다음의 조건식이 참일 경우 아래 블록의 문장들을 실행한다.


do-while문


public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int inputNumber = Integer.parseInt(br.readLine());

        do {
            System.out.println("현재 숫자는 " + inputNumber + "입니다.");
            inputNumber++;
        }while (inputNumber < 10);

    }
}

우선 do 뒤에 나오는 블록을 실행한다. 그리고 블록의 실행을 마칠 때 while뒤의 조건식이 참이면 다시 맨 위의 블록으로 돌아가 흐름을 반복한다.


for문


public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int inputNumber = Integer.parseInt(br.readLine());

        for (int i = 0; i < 10; i++) {
            System.out.println("현재 숫자는 " + inputNumber + "입니다.");
        }

    }
}

가장 기본적인 for문이다.( 1 ; 2 ; 3 )의 형식 안에서
1번 구간은 반복문 안에서 사용할 값을 초기화한다.
2번 구간은 조건식을 판별한다. 해당 조건이 참이면 아래 블록의 문장을 실행하고 거짓이면 멈춘다.
3번 구간은 해당 블록이 실행되고 나서 따로 처리할 변수들의 값 변화구간이다.
3번이 끝나면 2->블록->3->2->블록->3의 형태로 반복적으로 계속 실행한다.


public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int inputNumber = Integer.parseInt(br.readLine());
        int k = 0;

        for (; i < 10 && inputNumber < 80; inputNumber++, i++) {
            System.out.println("현재 숫자는 " + inputNumber + "입니다.");
        }

    }
}

1번 구간과 같이 해당 구간을 생략하는것도 가능하다.
2번 구간은 생략하면 true이다.
더불어 3번 구간에는 쉼표로 여러개의 작업을 처리하는 것도 가능하다.


for-each문


public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int inputNumber = Integer.parseInt(br.readLine());

        int[] arr = new int[inputNumber];

        for (int i = 0; i < arr.length; i++) {
            arr[i] = i + 1;
        }

        for (int i : arr) {
            System.out.println("현재 숫자는 " + i + "입니다.");
        }

    }
}

아래의 for문인데 배열, list와 같이 선형 자료구조를 가지고 있는 집합에 대해서 자동적으로 반복을 실행해주는 반복문이다.
인덱스가 필요 없을 때 사용한다.


!Iterator와 Stream은 추후에 Collection프레임워크와 Stream을 다룰 때 다시 언급하기로 한다.

저작자표시 비영리 변경금지 (새창열림)

'Java&Spring > STUDY HALLE' 카테고리의 다른 글

[Java] GitHub Library 사용법  (0) 2020.12.06
[Java] JUnit5  (0) 2020.12.05
[Java] 연산자  (1) 2020.11.27
[Java] 데이터타입, 변수, 배열  (0) 2020.11.21
[Java]JVM 기술 스택의 구조 이해하기  (0) 2020.11.14
'Java&Spring/STUDY HALLE' 카테고리의 다른 글
  • [Java] GitHub Library 사용법
  • [Java] JUnit5
  • [Java] 연산자
  • [Java] 데이터타입, 변수, 배열
무토(MUTO)
무토(MUTO)
무식하게 공부하자. 토 나올 때 까지.
  • 무토(MUTO)
    MUTO 와 함께 개발을
    무토(MUTO)
  • 전체
    오늘
    어제
    • 분류 전체보기 (32)
      • 우아한유스방 (0)
      • Node (1)
      • 알고리즘 (3)
      • Java&Spring (21)
        • STUDY HALLE (15)
        • 차세대를 하면서... (2)
        • Java (2)
        • Spring (2)
      • 실패록 (5)
        • 오늘의 실패록 (2)
        • 회고록 (3)
      • 책읽기 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    bytecode
    @RequestMapping
    이진탐색트리
    선형자료구조
    더블 디스패치
    자바
    백준
    junit5
    whiteship
    객체지향
    취준생
    operator
    github
    이진트리
    유닛테스트
    java8
    오브젝트
    연결리스트
    조영호
    jvm
    Java
    Comparable
    study halle
    intellij
    Java Exception
    enum
    415
    실패록
    java error
    comparator
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
무토(MUTO)
[Java] 제어문
상단으로

티스토리툴바