<Java> 제어문

라모스·2021년 8월 26일
0

Java☕

목록 보기
4/14
post-thumbnail

" 자바가 제공하는 제어문을 학습하세요. "

학습할 것

  • 선택문
  • 반복문

1. 선택문

의사 결정을 할 때 쓰인다. 조건의 참/거짓에 따라 서로 다른 작업을 수행할 수 있다.

if문, if-else문, switch문

if문

조건식이 참인 경우 code 블럭을 실행

if(n % 2 == 0) {
    System.out.println(n + "은 짝수입니다.");
}

if-else문

조건식이 참이면 code1을 실행, 아니면 code2 실행

if(n % 2 == 0) {
    System.out.println(n + "은 짝수입니다.");
} else {
    System.out.println(n + "은 홀수입니다.");
}

다중 if-else문

import java.util.Scanner;

public class Grading {
    public static void main(String[] args) {
        char grade;
        Scanner sc = new Scanner(System.in);

        System.out.println("점수를 입력하세요(0~100): ");
        int score = sc.nextInt();
        if (score >= 90)
            grade = 'A';
        else if (score >= 80)
            grade = 'B';
        else if (score >= 80)
            grade = 'C';
        else if (score >= 70)
            grade = 'D';
        else
            grade = 'F';
        System.out.println("학점은 " + grade + "입니다.");

        sc.close();
    }
}

switch문

선택문이라 불린다. 변수나 식의 값이 다양한 분기를 통해 프로그램의 실행 흐름을 제어할 수 있게 해준다. 다양한 분기를 if나 else if 보다 쉽게 만들 수 있으며, break 키워드를 이용해 각 분기를 마친다. switch 문은 하나의 변수나 식에 담긴 값을 각 case 키워드로 선언된 값들과 비교해 둘이 일치하는 경우, 그 case의 코드 블럭을 실행시킨다. default 문은 생략 가능함.

import java.util.Scanner;

public class GradingSwitch {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        char grade;
        System.out.println("점수를 입력하세요(0~100): ");
        int score = sc.nextInt();
        switch (score / 10) {
            case 10:
            case 9:
                grade = 'A';
                break;
            case 8:
                grade = 'B';
                break;
            case 7:
                grade = 'C';
                break;
            case 6:
                grade = 'D';
                break;
            default:
                grade = 'F';
        }
        System.out.println("학점은 " + grade + "입니다.");
        sc.close();
    }
}

2. 반복문

어떤 동작을 반복시킬 때 사용한다.

for문, while문, do-while문

for문: 처음부터 반복 횟수를 알 수 있는 경우에 사용

for (int i = 0; i < 10; i++) {
    System.out.println(i);
}

// <for 문의 특이한 형태>
for (초기작업; true; 반복 후 작업) { // 반복 조건이 true이면 무한반복
.................
}

for (초기작업; ; 반복 후 작업) { // 반복조건이 비어 있으면 true로 간주하여 무한반복
.................
}

// 초기 작업과 반복 후 작업은 ','로 분리하여 여러 문장 나열 가능
for (i=0; i<10; i++, System.out.println(i)) {
.................
}
// 이처럼 변수 선언 및 초기화만 가능함(하나는 변수선언, 하나는 초기화같은 꼴은 불가)
for (int i = 0, j = 0, sum = 0; i <= 100; i++, j++)
    sum += arr[i][j];

// for 문 내에 변수 선언
for (int i = 0; i < 10; i++) { // 변수 i는 for 문 내에서만 사용 가능
.................
}

초기문

조건식에서 사용하는 변수를 초기화 한다.

  • 초기문은 시작할 때 한 번만 수행된다.
  • 콤마(,)로 분리하여 여러 문장을 나열할 수 있다.
  • 초기문은 빈 상태로 두어도 되지만 끝에 세미콜론(;)은 있어야 함.

조건식

논리형 변수나 논리 연산을 사용한다. 조건식의 결과가 true이면 반복이 계속되고 false이면 for 문을 벗어난다. for 문의 작업 문장을 수행하기 전에 검사되므로 조건식이 처음부터 false 이면 바로 반복문을 벗어나게 된다.

반복 후 작업

for문의 작업문이 실행 된 후 실행됨.

작업문

for문이 반복되는 동안 반복 실행된다.

while문: 반복 횟수를 알 수 없는 경우에 적합한 루프 구조.

i = 0;
while(i < 10) {
    System.out.println(i);
    i++;
}

for 문과 달리, while 문에 조건식이 없으면 컴파일 오류가 발생한다. 또한 조건식에 사용되는 변수를 반드시 while 문 실행 전에 초기화시켜야 한다. 그리고 반복이 진행되면서 조건식이 false가 되어 반복문을 빠져나올 수 있다록 설계되어야 한다. 그렇지 않다면 무한 루프에 빠지게 되는 결과 발생. 처음부터 반복조건을 통과한 후 작업문을 수행한다.

do-while문

i = 0;
do {
    System.out.println(i);
    i++;
} while(i < 10);

다른 반복문과 달리 do-while 문은 작업문 실행 후 조건식을 검사하므로 작업문이 최초 한 번은 반드시 실행된다.

3. 제어문

continue문: 반복문을 빠져 나가지 않으면서 다음 반복으로 진행

break문: 반복문 하나를 완전히 빠져 나갈 때 사용

  • 하나의 반복문만 벗어난다.
  • 중첩 반복의 경우 안쪽 반복문의 break문이 실행되면 안쪽 반복문만 벗어남.

References

  • 명품 Java Programming
  • Java의 정석 3판
profile
Step by step goes a long way.

0개의 댓글