백엔드 개발자 기록 일람/java 학습 기록

06. Java Switch 문과 반복문

안드레이 2023. 12. 28. 16:22

저번에는 if문만을 적었다.. 하고나니 너무 짧은 것 같았다. 오늘은 그래서  나머지를 한번에 정리해보고자 한다..

 

if - else 문(이하 if문)에서는 조건식이 참이냐 거짓이냐에 따라서 실행할 문장이 둘중에서 하나로 결정되었다. 따라서, if문에서 실행 경로는 두가지다. 그 경로를 늘리기 위해 다중 if문을 쓸수도 있지만. 그것보다 간단한 switch문을 사용해도 좋다.

 

switch  //제어식

{

        case c1:

            문장1;                // ]--- 제어식값이 c1이면 실행

            break;

        case c1:

            문장2 ;                // ]--- 제어식값이 c2이면 실행

            break;

           …

        default:

           문장f ;                // ]--- 일치하는 값이  없으 실행

           break;

}

 

예를 들어 제어식의 값이 c1이면 문장1을 수행하고. 제어식의 값이 c2면 문장2를 수행한다고 사정하자. 그리고 일지하는 값이 없으면 문장f를 수행한다. 이런 경우에 swith문을 사용하기 좋다.switch문에서는 제어식의 값을 계산하여 case  뒤의 c1,c2 ... 등과 비교한다. 만약 제어식의 값과 일치하는 값이 있으면 관련된 case 절 안의 문장이 실행된다. break 문에 도달하면 switch 문을 빠져나간다. 만약 어느 것에도 해당되지 않으면 default 아래의 문장들이 실행된다.

 

switch 문에 문자열사용

Java 7부터는 switch문의 제어식으로 String 객체를 사용할 수 있다. 즉 문자열도 switch문을 이용하여 분류할 수 있는 것이다.

 

String s = "yes";

switch(s) {

        case "yes": ...

        break;

        case "bo": ...

        break;

}

 

 

For문

 

for 문은 정해진 횟수만큼 반복할 때 사용되는 반복구조이다. for 루프라고도 한다. fot문은 반복구조중 가장 많이 사용되는데... 많은 장점이 있다. 간단하고, 사용되는리소스가 적은 편이기 때문이다.

 

for( int i=0; i<10; i++) {  //int i = 0 초기식, i< 10 조건식; i ++ 증감식

    printf("Hello World!");

 

초기식을 실행한 후에 조건식이 ture인 동안 문장을 반복한다. 한번 반복이 끝날 떄마다. 증감식이 실행된다.

 

초기식

초기식은  반복 루프를 제어변수를 선언하고 초기화 하는 용도로 많이 사용된다. 위의 식에선 변수 i를 선언하고 0으로 초기화  하였다. 이변수는 for문 안에서만 사용할 수 있다.

 

조건식

반복의 조건을 검사하는 수식이다. 이 수식의 값이 true이면 반복이 계속되고 false가 되면 반복이 중단된다. 위의 식에선 i<10이 조건이다.

 

증감식

한 번의 반복 루프가 끝나면 증감식이 실행된다. 위의 식에서는 i++;가 여기에 해당되고 변수의 i의 값을 1만큼 증가시키는 역활을 한다.

 

while문은 어떤 조건을 정해놓고서 반복을 실행하는 구조이다. 예를 들면 자동차 경주에서 경주용 자동차는 반드시 서킷을 10번 돌아야한다면, 반복하는 조건은 '서킷을 돈 횟수가 10번 미만인가?"가 된다. 반복을 결정하는 조건이 있고, 조건이 참이면 반복을 하고 그렇지 않으면 반복루프를 빠져나가게 된다.

 

while( i<10) // i<10 조건문

    printf("Hello World!\n")

 

while 안의 조건식이 참이면 중괄호 안의 문장을 반복실행한다. 반복되는 문장이 하나이면 중괄호는 생략할 수있다. 예를 들어서 " 드로! 몬스터카드!"를 화면에 5번 출력하는 예제를 while문을이용하여 작성하면 다음과 같다.

 

 

위의 코드에서 반복조건에 해당되는 것은 수식 "x<10"이다 위의 코드가 의미하는 것은 x가 10보다 작은 동안에는 중괄호 안에 있는 2개의 문장을 실행하라는 것이다. x의 초기값은 0이고 x는 한번 반복될 때마다 1씩 증가된다. 따라서 x는 0->1->2->3->4와 같이 증가하게 되고 x가 10이 되면 수식 'x<10'은 거짓이 되어 반복이 종료된다. 반복조건은 while 문에 처음으로 진입할 때 검사되고 한 번씩 반복할 때마다 반복을 계속할 것인지를 결정하기 위하여 검사된다.

 

do -while문

do -while문은 while문과 비슷하나 반복 조건의 루프의 처음이 아니라 루프의 끝에서 검사된다. do -while문이 while문과 다른 점은 조건을  검사하기 전에 블록안의 문장을 실행한다는 점이다. while문에서는 조건이 거짓이면  블록안의 문장을 한번도 실행하지 않는다. do -while 문에서는 먼저 블록안의 문장을 실행하고나서 조건을 검사하기 때문에 블록 안의 문장이  적어도 한번은 실행된다.

 

중첩 반복문

반복문은 중첩하여 사용될  수 있다. 즉 반복문 안에 다른 반복문이 실행될 수 있다. 이러한형태를 중첩 반복문이라고 한다. 바깥쪽에 위치한 반복문을 외부 반복문이라고 하고 안쪽의 반복문을 내부 반복문 이라고 한다. 내부 반복문은 외부 반복문이 한번 반복될 때마다 새로 실행된다. 중첩 반복문에서 가장 주의할 점은 각각의 반복문을 제어하는 변수가 달라져야 한다는 점이다. 만약 같은 변수가 사용되면 논리오류가 발생할 가능성이 높다.

 

break문 

break문은 반복문을 벗어날 때 사용한다. break 문이  실행되면 현재의 반복문을 벗어나게 된다. break문에 레이블을 붙이면 중첩 반복문도 벗어날 수 있다.

 

continue문

continue문은 반복문에서 현재의 반복을 건너 뛰어서 다음 반복으로 넘어가게 한다.

int y = 0; y<10에서 continue의 조건이 4라면 0 1 2 3 5 6 7 8~ 이렇게 진행된다.

 

무한 루프와 break문

while 문을 사용할 때, 종료 조건을 만들려면 상당히 까다로운 경우가   있다. 예를 들어 사용자가 'q'를 입력하거나 사용자가 입력한 정수의 갯수가 546486개를 넘어가면 반복을 종료한다고 하자. 이경우 while 문을 이용해서 반복조건을 설정하면 이해하기 어려울 수 도 있기에. 이경우에는차라리 while(true)를 이용하여 무한 루프를 만들고 무한  루프안에서  break를 사용하여 루프를 빠져나가는  조건을 기술하는 편이 가독성이 높고 쉬운 코딩이 된다.