day-3 (23.05.04)

정길규·2023년 5월 4일

Part 03. 조건문관 반복문

if

if(조건식) {
조건식의 결과가 '참'일 때 실행하고자 하는 문장;
}

public class Control1_1 {
    public static void main(String[] args) {
        char ch = 'b';
        if (ch >= 'a' && ch <= 'z') {
            System.out.println("해당 문자는 영문 소문자입니다.");
        }
    }
}

if 문 내에서 하나의 문장을 실행 할 때에는 { } 생략 가능

if - else

if (조건식) {
조건식의 결과가 '참'일 때 실행하고자 하는 문장;
} else {
조건식의 결과가 '거짓'일 때 실행하고자 하는 문장;

if -else if - else

if (조건식1) {
조건식1의 결과가 '참'일 때 실행하고자 하는 문장;
} else if (조건식2) {
조건식 2의 결과가 '참'일 때 실행하고자 하는 문장;
} else {
조건식 1의 결과도 '거짓'이고, 조건식2 의 결과도 '거짓'일 때 실행하고자 하는 문장;

switch

switch (조건식) {
	case 값1:
    	조건식의 결과가 값1과 같을 경우 수행할 문장;
        break;
    case 값2:
    	조건식의 결과가 값2와 같을 경우 수행할 문장;
    ...
    
    default:
    	조건식의 결가와 일치하는 case 문이 없을 때 수행할 문장;
        
 }
  • default 문은 생략 가능.

if 조건문과 switch 비교

public class switchCase {
    public static void main(String[] args) {
        // Switch Case

        // 석차에 따른 장학금 지급
        // 1등 : 전액 장하금
        // 2등 : 반액 장학금
        // 3등 : 반액 장학금
        // 그 외 : 장학금 대상 아님

        // If Else 문을 이용 (여러 조건 또는 범위에 해당하는 조건)
        int ranking = 1; // 등수
        if (ranking == 1) {
            System.out.println("전액 장학금");
        } else if (ranking == 2 || ranking == 3) {
            System.out.println("반액 장학금");
        } else {
            System.out.println("장학금 대상 아님");
        }
        System.out.println("조회 완료 #1");

        // Switch Case 문을 이용 (명확한 케이스가 있는 경우)
        ranking = 1;
        switch (ranking) {
            case 1:
                System.out.println("전액 장학금");
                break;
            case 2:
                System.out.println("반액 장학금");
                break;
            case 3:
                System.out.println("반액 장학금");
                break;
            default:
                System.out.println("장학금 대상 아님");
        }
        System.out.println("조회 완료 #2");

        // case 2 와 3 을 통합
        ranking = 2;
        switch (ranking) {
            case 1:
                System.out.println("전액 장학금");
                break;
            case 2:
            case 3:
                System.out.println("반액 장학금");
                break;
            default:
                System.out.println("장학금 대상 아님");
        }
        System.out.println("조회 완료 #3");
    }
}
 

for

for (초기화;조건식;증감식) {
	조건식의 결과가 '참'인 동안 반복적으로 실행하고자 하는 문장;
}

실행순서
1. 초기화
2. 조건식
3. 조건식 이 '참'일 경우 문장 수행
4. 증감식
5. 조건식이 '거짓'이 될 때 까지 반복

public class For {
    public static void main(String[] args) {
        // 반복문 For

        // 반복문 사용
        for (int i = 0; i < 10; i++ ) {
            System.out.println("어서오세요. gilgyu 입니다. " + i);
        }

        // 짝수만 출력 (fori 만 적고 엔터)
        for (int i = 0; i < 10; i += 2) {
            System.out.print(i);  // 0, 2, 4, 6, 8
        }
        System.out.println();

        // 홀수만 출력
        for (int i = 1; i < 10; i += 2) {
            System.out.print(i); // 1, 3, 5, 7, 9
        }
        System.out.println();

        // 거꾸로 숫자
        // 5, 4, 3, 2, 1
        for (int i = 5; i > 0; i--) {
            System.out.print(i); // 5, 4, 3, 2, 1
        }

        System.out.println();

        // 1부터 10까지의 수들의 합
        int sum = 0;
        for (int i = 1; i <= 10; i++) {
            sum += i;
            System.out.println("현재까지 총합은 " + sum +"입니다.");
        }
        System.out.println("1부터 10까지의 모든 수의 총합은 " + sum + "입니다.");
    }
}
  • fori 입력시 for (int i = 0; i < ; i++) { } 자동 완성.

임의의 정수 만들기

Math.random() -> 0.0 과 1.0 사이의 임의의 double 값을 변환합니다.

  • 0.0 <= Math.random() < 1.0
public class Control4_1 {
    public static void main(String[] args) {
        // 괄호 {  } 안의 내용을 20번 반복
        // 1. 1 ~ 10 사이의 난수를 20개 출려가시오.
        // 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

        // 2. -5 ~ 5 사이의 난수를 20개 출력하시오.
        // -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5
        for (int i = 0; i < 20; i++) {
        // 1번
//            System.out.println(Math.random() * 10);
//            System.out.println((int)(Math.random() * 10));
            System.out.println((int)(Math.random() * 10) + 1);

        // 2번
//            System.out.println((int)(Math.random() * 11)); // 0 ~ 10
            System.out.println((int)(Math.random() * 11) - 5); // - 5 ~ 5
        }
    }
}

while

while (조건식) {
	조건식의 결과가 '참'인 동안 반복적으로 실행하고자 하는 문장;
}

실행 순서
1. 조건식
2. 조건식 이 '참'일 경우 문장수행
3. 조건식이 '거짓'이 될 때 까지 반복

public class Control5_1 {
    public static void main(String[] args) {
        int i = 10;

        while (i-- != 0) {
            System.out.println(i); // 무한루프에 빠진다
        }
        while (i != 0) {
            i--;
            System.out.println(i);
        }
    }
}

do - while

do {
	조건식의 결과가 '참'인 동안 반복적으로 실행하고자 하는 문장;
} while (조건식);

실행 순서
1. 처음 한 번은 무조건 실행
2. 조건식
3. 조건식이 '참'일 경우 문장 수행
4. 조건식이 '거짓'이 될 때 까지 반복

public class DoWhile {
    public static void main(String[] args) {
        // 반복문 While
        int distance = 25; // 전체 거리 25m
        int move = 0; // 현재 이동 거리 0m
        int height = 2; // 키 2m
        while (move + height < distance) {
            System.out.println("발차기를 계속 합니다.");
            System.out.println("현재 이동 거리 : " + move);
            move += 3; // 3m 이동
        }
        System.out.println("도착했습니다.");

        // Do While 반복문
        do {
            System.out.println("발차기를 계속 합니다.");
            System.out.println("현재 이동 거리 " + move);
            move += 3;
        } while (move + height < distance);
        System.out.println("도착했습니다.");
    }
}
// 조건문이 false 일때 while 반복문일 경우에는 반복문 안의 명령은 실행하지 않고 바로 나가지만 do while 경우 한번은 실행하고 나온다.

break

자신이 포함된 하나의 반복문을 벗어납니다.

public class Control6_1 {
    public static void main(String[] args) {
        int sum = 0;
        int i = 0;

        while (true) {
            if (sum > 100)
                break;
            ++i;
            sum += i;
        }
        System.out.println("i = " + i); // i = 14
        System.out.println("sum = " + sum); // sum = 105
    }
}

continue

자신이 포함된 반복문의 끝으로 이동

  • 그리고 다음 반복으로 넘어갑니다.
  • 전체 반복 중에서 특정 조건시 반복을 건너뛸 때 유용합니다.
public class Control6_2 {
    public static void main(String[] args) {
        for (int i = 0; i <= 10; i++) {
            // 3의 배수는 건너뜀 : 3, 6, 9
            if (i % 3 == 0)
                continue;
            System.out.println("i = " + i);
        }
    }
}

이름붙은 반복문

반복문에 이름을 붙여서 하나 이상의 반복문을 벗어납니다.

public class Control6_3 {
    public static void main(String[] args) {
        allLoop :
        for (int i = 2; i < 10; i++) {
            for (int j = 1; j < 10; j++) {
                if (i == 5) {
                    break allLoop;
                }
                System.out.println(i + "*" + j + "=" + (i * j));
            }
        }
    }
}

3일차를 마치며

오늘은 조건문과 반복문을 공부하였다. 오늘 공부한 내용도 전부 이해하지는 못하였다. 몇일 째 그냥 교재 보고 따라서 하는 거 밖에 없는데 몇 달뒤에는 얼마나 바뀔까 하는 걱정도 살짝 들기도 한다. 이렇게 공부하는게 맞는거겠지?...ㅎ

0개의 댓글