[Java] 조건문과 반복문

Minit88·2023년 2월 20일
0

[Java]

목록 보기
4/18
post-thumbnail

조건문과 반복문을 통틀어 제어문이라 칭한다. 제어문은, 아래와 같이 나눠진다.

  • 조건문 : if문,switch문
  • 반복문 : for문,while문,do while문

Lab_01 - 조건문

if 문

if 문의 소괄호 안에는 boolean 값으로 평가될 수 있는 조건삭을 넣어주고, 중괄호 안의 실행블록에는 조건식이 참일 때 실행하고자 하는 코드를 적어주면 된다.
중괄호({})를 이용해 여러 문장을 하나의 단위로 묶을 수 있으며, 이것을 ‘블록(block)’이라고 합니다.

if (조건식) {
	//조건식이 참이라면 실행되는 블록입니다.
} 

if...else 문

if...else문은 조건식의 결과에 따라 실행블록을 선택한다. if문의 조건식이 true이면 해당 블록이 실행되고, 조건식이 false이면 다음으로 넘어가 else if 문의 조건식을 검사한다.
else if문의 모든 조건식이 false라면, 나머지 경우를 의미하는 else 블록이 실행됩니다. 다음의 그림을 통해서 흐름을 이해해봅시다.

//code
}
elif if(a==c) {
//code
}
else {
//code
}

Switch문

switch문도 if 문과 마찬가지로 조건 제어문이다. 하지만 switch문은 if문처럼 조건식이 true일 경우에 블록 내부의 실행문을 실행하는 것이 아니라, 변수가 어떤 값을 갖느냐에 따라 실행문이 선택된다.

String dice = myInput.nextLine(); //주사위 번호 입력

        switch (dice) {
            case "1":
                System.out.println("1번");
                break; //다음 case를 실행하지 않고, switch문 탈출!
            case "2":
                System.out.println("2번");
                break;
            case "3":
                System.out.println("3번");
                break;
            case "4":
                System.out.println("4번");
                break;
            case "5":
                System.out.println("5번");
                break;
            case "6":
                System.out.println("6번");
                break;
            default: //switch문의 괄호 안 값과 같은 값이 없으면, 여기서 실행문 실행
                System.out.println("없는 숫자! " + dice);
                break;
        }

switch문은 괄호 안의 값과 동일한 값을 갖는 case로 가서 실행문을 실행한다. 그러나 만약 괄호 안의 값과 동일한 값을 갖는 case가 없으면 default로 가서 실행문을 실행한다(default는 생략 가능).
위의 예시 코드에서는 num의 값과 case의 번호가 같으면 해당 case안의 실행문을 실행하고 실행이 완료되면 break를 통해서 switch문을 탈출한다. 주의할 점은, break문을 작성하지 않으면 switch문을 탈출하지 않고 모든 case문을 실행하게 되어 원하는 방식으로 동작하지 않는다는 것이다.

Lab_02 - 반복문

for문

for 문은 조건식이 참인 동안 주어진 횟수만큼 실행문을 반복적으로 수행한다.

public class Main {
  public static void main(String[] args) {
    int sum = 0;
    // for (초기화; 조건식; 증감식)
    for(int num = 0; num < 10; num++) {	
      sum += num;
    }
    System.out.println(sum); // 1~9의 합인 45가 출력됩니다.
  }
}
  • 초기화 : for문이 시작할 때 최초 한 번만 수행되며, 사용할 변수의 초깃값을 정한다.

  • 조건식 : 계속 반복할지 여부를 결정하는 조건. 조건식 안의 값이 true라면 실행문을 실행시키고, false라면 더 이상 블록을 실행하지 않고 끝난다.

  • 증감식 : 반복 횟수를 결정하는 규칙이다. 변수에 값을 더하거나 곱하는 등 수행 방식을 지정합니다. ++ 은 반복문에서 자주 쓰는 증감연산자로, 피연산자의 값을 1 증가시킨다.

위 코드가 실행되는 과정을 하나씩 살펴보면

  • num이라는 변수를 선언하고, 초깃값으로 0을 대입한다.
  • num은 현재 10보다 작으므로(num<10), 실행 블록 안의 코드가 최초로 수행된다.
  • 실행 블록을 빠져나오면 num이 1 증가한다.(i++)
  • num이 9일때까지 반복된다.
  • num이 10이 되면 10보다 작다는 조건을 만족하지 못하므로, for문이 종료된다.

향상된 for문(Enhanced for문)

향상된 for문은 반복 실행을 하기 위해 카운터 변수와 증감식을 사용하지 않는다. 배열 및 컬렉션 항목의 개수만큼 반복하고 자동적으로 for문을 빠져나간다.
다음 예시를 통해 향상된 for을 보면,

public class EnhancedForLoop {
  public static void main(String[] args) throws Exception {
    String[] names = {"kimcoding", "javalee", "ingikim"};
    for(String name : names) {
      System.out.println(name + "님은 자바를 공부중 입니다.");
    }
  }
}
/*
kimcoding님은 자바를 공부중 입니다.
javalee님은 자바를 공부중 입니다.
ingikim님은 자바를 공부중 입니다.
*/

위와 같이 for 문의 괄호( () ) 안에는 배열에서 꺼낸 항목을 저장할 변수 선언,콜론( : ) 그리고 사용할 배열이 작성된다.
배열 안의 항목들을 선언한 변수에 저장하며 실행문을 실행시킨다. 반복 실행 후 , 블록 내부의 실행문이 모두 실행 되면 다시 names 배열에서 가져올 값이 있는지 확인하고 가져올 항목이 없다면 자동적으로 for문이 종료된다

while문

for 문이 정해진 횟수만큼 반복한다면, while 문은 조건식이 true일 경우에 계속해서 반복한다.

(초기화);
while(조건식) {
  실행문; //조건식이 참인 동안 실행
  증감식;
}

아래의 코드를 통해 while문이 실행되는 과정을 살펴보자.

int num = 0, sum = 0;
while(num <= 10) {
  sum += num; //sum = sum + num과 똑같은 식입니다. 복합 대입 연산자 "+="를 사용한 표현입니다.
  num++;
}
System.out.println(sum);
  • num과 sum 이라는 정수 타입의 변수를 선언하고 초기값으로 0을 대입한다.

  • num은 현재 10보다 작으므로 블록 안의 코드가 수행된다.

  • sum이 현재의 num만큼 증가하고 num이 1 증가한다.
    num은 현재 1 여전히 10보다 작으므로, 실행 블록 안의 코드가 두 번째로 수행된다.

  • num이 10인 경우까지 반복된다.

  • num은 현재 11. 조건식이 거짓이므로 while문이 종료된다.

do-while문

다음의 코드는 do-while문의 기본 형식이다.

do {
  (1)실행문 //처음 한 번은 무조건 실행
} while((2)조건식);

do-while문이 처음 실행될 때 (1)실행문을 먼저 실행한다. (1)실행문이 모두 실행되면 (2)조건식을 평가한다. 그리고 그 결과가 true이면 (1)실행문 → (2)조건식으로 반복 실행을 하고, false이면 do-while문을 종료.

Lab_03 - break와 continue

break문

break 문은 반복문인 for,while,do-while 그리고 앞에서 학습한 switch문을 종료할 떄에 사용한다.
break 문은 대개 if문과 같이 사용되며, if문의 조건식에 따라 for/while문을 종료 할 때에 사용한다.
반복문이 중첩되어 있을 때 break문은 가장 가까운 반복문만 종료되고, 바깥쪽 반복문에는 영향을 끼치지 안흔다.
아래의 코드를 통해 이해해보자.

public class Main {
    public static void main(String[] args) {
        Outer : for (int i = 3; i < 10; i++) {
            for (int j = 5; j > 0; j--) {
                System.out.println("i " + i + " j "+ j);
                if (i == 5) {
                    break Outer;
                }
            }
        }
    }
}
/*
i 3 j 5
i 3 j 4
i 3 j 3
i 3 j 2
i 3 j 1
i 4 j 5
i 4 j 4
i 4 j 3
i 4 j 2
i 4 j 1
i 5 j 5
*/

outer 에서 i 는 3으로 초기화를 진행했고 i++으로 증감식을 설정했다. 이후 두번째 for 문에서는 j=5로 초기화 되었고 증감식은 1씩 감소하는 형태로 나타나 있다. 실행문을 통해 println i,j 값이 출력이 되고

  • i 3
    • j = 5,4,3,2,1
  • i 4
    • j = 5,4,3,2,1
  • i 5
    • j = 5
      i 5 j 5 일때 까지 출력이 되고 i는 5인 상태에서 if문의 조건식이 true 를 만족해 break 문이 실행하여 outer인 첫번째 for문이 종료된다.

continue 문

continue문은 반복문을 종료하지 않고 다음 차례로 넘어가 계속 반복을 수행한다. break문과 마찬가지로 continue문도 보통 if문과 함께 사용하는데, if문의 조건을 만족하는 경우 continue문을 실행하여 그 이후의 코드를 실행하지 않고 다음 반복으로 넘어간다.

public class Main {
   public static void main(String[] args) throws Exception {
       for (int i = 0; i < 10; i++) {
           if (i % 2 == 0) { //나머지가 0일 경우는
               continue; //다음 반복으로 넘어간다.
           }
           System.out.println(i); //홀수만 출력
       }
   }
}
/*
1,3,5,7,9
*/
profile
" To be BE "

0개의 댓글