코딩하는 털보

STUDY HALLE - 4주차 본문

Diary/Study Halle

STUDY HALLE - 4주차

이정인 2020. 12. 23. 01:35

STUDY HALLE

4주차 : 제어문


목표

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

학습할 것

  • 선택문
  • 반복문

선택문

특정 조건에서만 실행되는 로직이 있는 경우에 사용한다.

if - else

if (조건식) {
    수행문;
}
//조건식이 참인 경우 수행. 거짓인 경우 조건문 종료.
if (조건식) {
    수행문1;
} else {
    수행문2;
}
//조건식이 참인 경우 수행문1. 거짓인 경우 수행문2.
public class Test {
    public static void main(String[] args) {
        char gender = 'M';

        if ( gender == 'F' ) {
            System.out.println("여성입니다.");
        }
        else {
            System.out.println("남성입니다.");
        }
    }
}
  • 조건이 여러개인 경우에는 else if를 사용한다.
if (조건식) {
    수행문1;
} else if (조건식) {
    수행문2;
} else if (조건식) {
    수행문3;
} else {
    수행문4;
}
  • 예시) 나이별로 요금 계산하기
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        int age = scanner.nextInt();
        int charge = 0;

        if ( age < 8 ) {
            charge = 1000;
        }
        else if ( age < 14 ) {
            charge = 1500;
        }
        else if ( age < 20 ) {
            charge = 2000;
        }
        else {
            charge = 3000;
        }

        System.out.println("나이 : " + age);
        System.out.println("요금 : " + charge);
    }
}

switch - case

  • if ~ else if 문의 조건이 정수 또는 문자열일 경우 switch ~ case 로 사용할 수 있다.
switch(변수){
case 조건1: 수행문1;
case 조건2: 수행문2:
…
default : 수행문n;
}
  • 예시) 순위 별 메달 색
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int rank = scanner.nextInt();
        char medalColor;

        switch(rank) {
            case 1: medalColor='G';
                        break; //break가 없으면 다음 case 문이 조건과 상관 없이 수행된다.
                case 2: medalColor='S';
                    break;
            case 3: medalColor='B';
                    break;
            default : medalColor='A'; //default는 break이 필요 없다.
        }
        System.out.println(rank + "등의 메달 색은 " + medalColor + "입니다.");
    }
}
  • 자바 7부터 조건으로 문자열을 사용할 수 있다.
public class Test {
    public static void main(String[] args) {

        String medalColorT="Gold";
        int rank;

        switch(medalColorT) {
            case "Gold":
                rank = 1;
                break; //break가 없으면 다음 case 문이 조건과 상관 없이 수행된다.
            case "Silver":
                rank = 2;
                break;
            case "Bronze":
                rank = 3;
                break;
            default :
                rank = 0;
                System.out.println("Error");
        }
        System.out.println(medalColorT + "메달은 " + rank + "등 입니다.");

    }
}

switch문을 이용한 월별 날짜 수 확인 프로그램

  • 서로 다른 조건에 대한 수행문이 같은 경우 case를 병합할 수 있다.
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        int month = scanner.nextInt();
        int day;

        switch(month) {
            case 1: case 5: case 7: case 8: case 10: case 12: //case 병합
                    day=31;
                    break;
            case 2: day=28;
                    break;
            case 3: case 4: case 6: case 9: case 11:
                    day=30;
                    break;
            default :
                    System.out.println("Error");
                    day = 0;
        }
        System.out.println(month + "월의 날짜 수는 " + day + "일 입니다.");
    }
}

반복문

로직을 조건문에 맞게 반복적으로 실행할 때 사용한다.

while

  • 동일한 로직을 조건이 참인 경우 반복 수행한다.
while(조건식) {
    수행문;
}
public class Test {
    public static void main(String[] args) {

        int num = 1;
        int sum = 0;

        while ( num <= 10 ) { //num이 10이하인 동안 수행되다가, 11이 되고부터 수행되지 않는 반복문.
            sum += num;
            num++;
        }

        System.out.println(sum);

    }
}

do - while

  • 먼저 로직을 한번 실행하고 조건을 확인한다.
  • 최소 한번은 로직이 실행되어야 하는 경우에 사용.
do {
    수행문;
} while(조건식);
public class Test {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        int num;
        int sum=0;

        do {
            num = scanner.nextInt();
            sum += num;
            System.out.println(sum);
        } while ( num != 0 );

    }
}

for

  • 동일한 로직을 일정 횟수 반복할 수 있다.

  • 반복문 중 가장 많이 사용된다.

for (초기화식; 조건식; 증감식;)
{
    수행문;
}
public class Test {
    public static void main(String[] args) {

        int num=0;
        int total = 0;

        while ( num < 10) {
            total += num;
            num++;
        }
        System.out.println(total);

        //위와 아래는 같은 로직이지만 for문이 더 편하고 가독성이 좋다.     

        int count;
        int sum=0;

        for(count=0; count<10; count++) { //10회 반복, 횟수의 의미가 있는경우 가독성을 위해 0부터 시작하는 것에 익숙해지자.
            sum += count;
        }
        System.out.println(sum);

    }
}

for each

  • 향상된 for 문
for ( 변수 선언 : iterate ) { //iterate 객체에서 한 요소씩 순차적으로 변수에 대입되서 로직을 실행한다.
    수행문;
}
public class Test {
    public static void main(String[] args) {

        String[] nums = {"One", "Two", "Three"};

        //배열이나 ArrayList 등을 for each로 활용할 수 있다.
        for(String num : nums) {
            System.out.println(num);
        }
    }
}
Comments