개인 자료란 (JE)

  서버 커뮤니티

Profile 배고픈상어-효묘 대표칭호 없음
Profile

커뮤니티 소통 개발하기 프로그래밍

[초보Java 시리즈]05 - 조건문과 반복문

2020.03.16 조회 수 239 추천 수 1

05-1 조건문 

05-1.A 조건문 if, if..else if, if... else if... else

조건문이란, 어떤 특정한 조건이 '참' 이여야 특정한 문장들이 실행되게 하는 제어문입니다.

 

if 조건문에 들어가는 조건은 항상 boolean값이여야합니다.

if ( condition ){
    System.out.println("if문 실행.");
}

하지만 현실 세계에서는 특정한 조건이 참, 거짓으로만 나누기에는 한계가 있습니다. 따라서 조건이 여러 가지일 경우, 이에 대응하는 조건문을 작성할 필요가 있습니다.

int condition = 0;

if ( condition == 1 ){
    System.out.println("첫 번째 조건이 충족되었습니다.");
    // condition == 1일 경우 실행할 문장..
}else if ( condition == 2){
    System.out.println("두 번째 조건이 충족되었습니다.");
    // condition == 2일 경우 실행할 문장..
}else if ( condition == 3){
    System.out.println("세 번째 조건이 충족되었습니다.");
    // condition == 3일 경우 실행할 문장..
}else{
    System.out.println("어떠한 조건이 충족되지 않았습니다.");
    // 위 조건들이 맞지 않을 경우 실행할 문장..
}

조건문 안에 조건문을 구현할 수 있습니다. 이를 중첩 조건문이라고 합니다.

 

int num = 7;


if(num>0){
    System.out.println("num은 양수입니다.");
    if(isPrime(num)){//소수인지 아닌지를 반환하는 함수. 구현 방법은 나중에 포스팅 하겠습니다.
        System.out.println("num은 소수입니다.");
    }
}else if (num == 0){
    System.out.println("num은 0입니다.");
}else{
    System.out.println("num은 음수입니다.");
}

반복문을 하나만 쓰는것(if{}else if{}else{})과 여러 반복문의 나열 (if{} if{} if{}...)을 어려워하시는 분들이 계십니다. 이는 한번 혼자 생각하면서 어떤것이 더 좋은지 직접 코드를 작성하면서 익혀야 할 부분입니다. 그래도 제가 팁을 드리자면, 쉽게 생각하면 포함관계를 생각해보시면 됩니다.

 

예를 들어 남성 여성사람의 부분집합이고 서로 겹치지 않습니다. 사람이라는 공통된 부분에서 서로 겹치지 않기에 이는 if~else를 쓰는 것이 적절합니다.


다른 예시로는 시계의 진위 여부색깔을 구분하는 것입니다. 이 둘은 남성과 여성을 구분하는 것과는 다르게 겹치는 부분이 있습니다. 따라서 이는 if문을 두 번 쓰시면 됩니다. (if~else{} if~else if~...~else{})

 

중첩 조건문을 모르겠으면 수의 체계를 생각해 보시길 바랍니다. 수의 체계를 인터넷에 검색해보시면 어떤 느낌인지 확실하게 느낄 수 있으실겁니다.


5624ad50fd067799b81fb1163237f760.jpeg


[수의 체계]



출처 : librewiki.net

//이해를 돕기위한 코드입니다. 실제로 작성시 조건의 형태가 다릅니다.
if(복소수) {
    if(실수) {
        if(유리수) {
            if(정수) {
                if(양의정수) {
                    //자연수
                }else if(음의정수) {
                    //음의정수
                }else {
                    //0
                }
            }else {
                //정수가 아닌 유리수
            }
        }else {
            //무리수
        }
    }else {
        //허수
    }
}else {
    //복소수가 아님.
}

05-1.B 조건문 switch (case, default)

또다른 조건문으로는 switch가 있습니다. 구현할 조건문이 스위치같은 역할을 한다면 switch 구문을 이용하면 편할 수 있습니다.

int num = 2;
switch(num){// 괄호() 안에 스위치 역할을 하는 변수 입력
case 1:
    // case가 1일 경우 실행할 명령어
    System.out.println("case 1");
case 2:
    // case가 2일 경우 실행할 명령어
    System.out.println("case 2");
case 3:
    // case가 3일 경우 실행할 명령어
    System.out.println("case 3");
default:
    // case가 1,2,3이 아닐 경우 실행할 명령어
    System.out.println("default case");
}

여기서 조심해야할 것은 코드를 위 코드처럼 짜는 겁니다. 저 코드는 사실 불안정합니다.

만약 num이 1이였다면, case 1에 해당하는 코드를 실행시킬것입니다. 그리고, 이 switch 구문은 case 2를 실행시킵니다. 그 이유는 switch는 if문과는 다르게 조건에 맞는 case ~:으로 간 후, 그 밑에있는 모든 문장을 실행시킵니다.

예를 들어 위 코드에서 num이 1이면, case 1에서 시작해서 그 아래있는 case2, case3, default까지 실행시킵니다.


num이 3이라면 case 3과 default를 실행시키겠지요. 따라서 break;를 써줘야합니다.

 

int num = 1;
switch(num){// 괄호() 안에 스위치 역할을 하는 변수 입력
case 1:
    // case가 1일 경우 실행할 명령어
    System.out.println("case 1");
    break;
case 2:
    // case가 2일 경우 실행할 명령어
    System.out.println("case 2");
    break;
case 3:
    // case가 3일 경우 실행할 명령어
    System.out.println("case 3");
    break;
default:
    // case가 1,2,3이 아닐 경우 실행할 명령어
    System.out.println("default case");
    break;
}

05-2 반복문

반복문이란, 특정한 조건이 만족할 때 특정한 문장들이 실행되게 하는 제어문입니다.

반복문에는 for 반복문과 while, do-while 반복문이 있습니다.

for 반복문

for() 안에는 최초실행문, 조건실행, 반복자가 있습니다. 이 세가지는 세미콜론 ";"으로 구분합니다.

for(초기화 ; 조건 ; 반복자){
    //반복될 코드
}

다음은 보통 많이 쓰는 코드 형식입니다.

int loop = 10;
int i = 0;
for(i = 0 ; i < loop ; i++){
    System.out.println("현재 i의 상태 : "+i);
}

for(int j = loop ; j > 0 ; j--){
    //for문 안에서 선언된 변수는 for문 안에서만 존재할 수 있습니다.
    System.out.println("현재 j의 상태 : "+j);
}

 

보통 반복문에 이용되는 변수를 i혹은 j(k, l, o 등등..)으로 선언합니다. 이러한 변수는 내가 원하는만큼 반복할 수 있게 해줍니다.

while문

while문은 조건문이 일치할때 while구문을 실행합니다. 여기서 while구문이란, while옆에 붙어있는 { }말합니다.

double num = 12345;
int times = 0;
System.out.println("최소 num 상태 : "+num);
while(num < 2){
    num /= 2;
    times ++;
    System.out.printn("현재 num 상태 : "+num);
}
System.out.println("최종 num 상태 : "+num);
System.out.println("연산(반복) 횟수 : "+times);

 

while문으로 for문과 비슷하게도 만들 수 있습니다.

int i = 0;
int loop = 10;
while(i < loop){
    System.out.println("현재 i 상태 : "+i);
    i++;
}

 

do-while문

do~while문은 일단 조건을 무시하고 while구문을 실행시키고 봅니다. 쉽게 생각해서 while문에서 while구문이 while문 위에 하나 더 있다고 생각하시면 됩니다.

do{
    //something to do
}while(조건);

//아래 코드와 똑 같습니다.

//something to do
while(조건){
    //something to do
}



1개의 댓글

윈초
2020.03.16

어ㅓㅓㅓㅓ...... 네 알겠습니다?

뉴스 및 창작물
/files/thumbnails/520/751/003/262x150.crop.jpg?20240328020349

레드스톤

마인크래프트 노트블록으로 만든 『 Bling‐Bang‐Bang‐Born 』 1

Sonttukk

2024-03-23

1

/files/thumbnails/467/742/003/262x150.crop.jpg?20240311163123

레드스톤

[노트블럭커버] MILGRAM -ミルグラム(밀그램)- / 아마네 「숙청 행진」 제 2심 2

리비온

2024-03-11

0

/files/thumbnails/846/741/003/262x150.crop.jpg?20240310221214

레드스톤

워든 vs 라마 200마리 1

GlassesFilm

2024-03-10

0

/files/thumbnails/542/739/003/262x150.crop.jpg?20240309070457

레드스톤

[고인의 명복을 빕니다][노트블럭]드래곤볼 GT 오프닝 - 점점 마음이 끌려

리비온

2024-03-09

0

/files/thumbnails/326/738/003/262x150.crop.jpg?20240328020414

레드스톤

마인크래프트 노트블록으로 만든 『 Build Our Machine 』

Sonttukk

2024-03-07

0