본문 바로가기
Java/Java Basics

04. 자바(Java) 조건문과 반복문 / [확인문제]

by ITmin 2022. 1. 3.

 

제 1 절 코드 실행 흐름 제어

  • 정상적인 코드 실행 흐름
    • main() 메소드의 시작 중괄호 { 에서 끝 중괄호 } 까지 위에서 아래 방향으로 실행
  • 제어문의 역할
    • 정상적인 코드 실행 흐름을 개발자가 원하는 방향으로 변결할 수 있도록 해준다.
  • 제어문의 구성 요소
    • 조건식 : 중괄호 내부를 실행할지 결정
    • 중괄호 {} : 제어문의 실행 내용
  • 제어문의 종류
    • 조건문 : if문, switch문
    • 반복문 : for문, while문, do-while문
    • break문, continue문
  • 제어문의 중첩
    • 제어문의 중괄호 내부에 다른 제어문 작성 가능 : 다양한 흐름 발생

 

제 2 절 조건문

  • if문
    • 조건식 결과에 따라 중괄호 {} 블록을 실행할지 여부를 결정할 때 사용
    • 조건식에는 true 또는 false 값을 산출 할 수 있는 연산식 또는 boolean 변수가 온다.
    • 조건이 true이면 블록을 실행, false이면 실행 x
  • if-else문
    • 조건식의 결과에 따라 실행 블록을 선택한다.
  • if-else if-else문
    • 복수의 조건식을 두어 조건식을 만족하는 블록만 실행한다.
    [참고] Math.random() : 0≤ Math.random < 1 임의의 실수
  • 중첩 if문
  • switch문
    • 변수나 연산식의 값에 따라 실행문을 선택할 때 사용한다.

 

제 3 절 반복문

  • 반복문
    • 중괄호 블록 내용을 반복적으로 실행할 때 사용한다.
  • for문
    • 반복 횟수를 알고 있을 때 주로 사용
    • for(①초기화식; ②조건식; ④증감식;){ ③실행문; }
  • while문
    • 조건에 따라 반복을 계속할지를 결정할 때 사용
    • while(①조건식;){ ②실행문; }while문
    • [참고] println()과 print()의 차이점 : println()은 행을 내리고 print()는 행을 내리지 않는다.
    • [참고] System.in.read() 는 키보드의 키 코드 값을 읽는 메소드
  • do-while문
    • 조건에 따라 반복을 계속할지를 결정할 때 사용하는 것은 while문과 동일
    • 무조건 중괄호 {} 블록을 한 번 실행하고, 조건을 검사하여 반복 결정
    • do{ ①실행문; } while (②조건식);do-while문
    • [참고] while문과 do-while문의 차이점: do-while문은 무조건! 한번 실행, while문은 조건보고.
  • break문
    • for문, while문, do-while문을 종료한다. (반복을 취소한다.)
    • switch문을 종료한다.
    • 대개 if문과 같이 사용되어 if문의 조건식에 따라 for문과 while문을 종료할 때 사용
    ※ 반복문이 중첩 되어 있을 경우
    • 반복문이 중첩되어 있을 경우 break문은 가장 가까운 반복문만 종료
    • 바깥쪽 반복문까지 종료시키려면 반복문에 이름(라벨)을 붙이고, “break 이름;”을 사용

유튜브 이것이자바다 - 4.3 반복문(for문, while문, do-while문)(2)

 

  • continue문
    • for문, while문, do-while문에서 사용
      • for문 : 증감식으로 이동
      • while문, do-while문 : 조건식으로 이동

 


[ 확인 문제 ]

1. 조건문과 반복문의 종류를 () 속에 넣어 보세요.
   - 조건문 : (if문), (switch문)
   - 반복문 : (for문), (while문), (do-while문)

 

2. 조건문과 반복문을 설명한 것중 틀린 것은?
    ① if문은 조건식의 결과에 따라 실행 흐름을 달리할 수 있다.
    ② switch문에서 사용할 수 있는 변수의 타입은 int, double이 될 수 있다.
    ③ for문은 카운터 변수로 지정한 횟수 만큼 반복시킬 때 사용할 수 있다.
    ④ break문은 switch문, for문, while문을 종료할 때 사용할 수 있다.

                                                                                                                  답 : ② double 불가능

 

3. for문을 이용해서 1부터 100까지의 정수 중에서 3의 배수의 총합을 구하는 코드를 작성해 보세요.

 

public class Exercise03 {
    public static void main(String[] args){
        int sum=0;
        for(int i=1; i<=100; i++){
            if(i%3==0){
                sum+=i;
            }
        }
        System.out.println("3의 배수의 합:"+sum);
    }
}

 

4. while문과 Math.random() 메소드를 이용해서 두 개의 주사위를 던졌을 때 나오는 눈을 (눈 1, 눈 2) 형태로 출력하고, 눈의 합이 5가 아니면 계속 주사위를 던지고, 눈의 합이 5이면 실행을 멈추는 코드를 작성해 보세요. 눈의 합이 5가 되는 조합은 즉 (1,4), (4,1), (2,3), (3,2) 이다.

 

public class Exercise04 {
    public static void main(String [] args){
        while(true){
            int n = (int) (Math.random()*6)+1;
            int m = (int) (Math.random()*6)+1;
            System.out.println("("+n+","+m+")");
            if(n+m==5){
                break;
            }
        }
    }
}

 

5. 중첩 for문을 이용해서 방정식 4x + 5y = 60 의 모든 해를 구해서 (x,y) 형태로 출력해 보세요. 단 x와 y는 10이하의 자연수 입니다.  

 

public class Exercise05 {
    public static void main(String[] args){
        for(int x=1; x<=10; x++){
            for(int y=1; y<=10; y++){
                if((4*x) + (5*y) == 60){
                    System.out.println("("+x+","+y+")");
                }
            }
        }
    }
}

 

6. for문을 이용해서 실행 결과와 같은 삼각혈을 출력하는 코드를 작성해 보세요.

 

public class Exercise06 {
    public static void main(String[] args){
        for(int i=1; i<=5; i++){
            for(int j=1; j<=i; j++) {
                System.out.print("*");
                if (j == i) {
                    System.out.println();
                }
            }
        }
    }
}

 

7. while문과 Scanner 이용해서 키보드로부터 입력된 데이터로 예금, 출금, 조회, 종료 기능을 제공하는 코드를 작성해 보세요. 

 

import java.util.Scanner;

public class Exercise07 {
    public static void main(String[] args){
        boolean run = true;
        int balance=0;
        Scanner scanner = new Scanner(System.in);

        while(run){
            System.out.println("-------------------------");
            System.out.println("1.예금|2.출금|3.잔고|4.종료");
            System.out.println("-------------------------");
            System.out.print("선택>");

            int menuNum = scanner.nextInt();

            switch (menuNum){
                case 1:
                    System.out.print("예금액>");
                    balance += scanner.nextInt();
                    break;
                case 2:
                    System.out.print("출금액>");
                    balance -= scanner.nextInt();
                    break;
                case 3:
                    System.out.println("잔고>"+balance);
                    break;
                case 4:
                    run = false;
            }
        }
        System.out.println("프로그램 종료");
    }
}

 

댓글