반응형

자바 조건문

조건문은 무엇인가?

 

조건문은 프로그램의 흐름을 제어하기 위한 문장이다. 플로우차트(flow chart)를 프로그램으로 옮겨놓은 것이다.

 

조건문-플로우차트
조건문 플로우차트

시작해서 조건식을 검증한다. 조건식이 참이면 수행문1로 거짓이면 수행문2로 분기한다. 둘 중 하나가 실행되면 종료한다.

 

자바 if문 if-else문

 

가장 기본이 되는 조건문이다. if 는 ~라면 이라는 가정이다. 영어시간에 안들어본 사람이 없을 것이다.

 

if I have enough money I will buy a house. 내가 돈이 충분하다면 집을 사겠다. 이것을 프로그래밍 해보자.

 

사람의 말을 프로그램으로 바꿀려면 좀더 구체적이야 한다. enough 라는 것은 컴퓨터가 알 수가 없다. 10만 달러(1억2천만원)이라고 하자. 그리고 집값이 얼마인지 알아야 살 수 있다. 집값은 8만달러(9천6백만원)라고 하자. 그러면

 

int myMoney = 100000; // 내가 가진돈 10만 달러

int priceHouse = 80000; // 집값 8만달러

if (myMoney> priceHouse){
    myMoney = myMoney - priceHouse;
    System.out.println("집을 샀습니다. 남은 돈 " + myMoney);
}
else {
    System.out.println("돈이 부족합니다. 집을 살수가 없습니다.");
}

 

예문에서는 if (조건식) 안에 관계연산을 한다. 크기를 비교하고 내 돈이 집값보다 많으면 if 조건식 다음에 나오는 괄호{}안의 문장들을 실행한다. 조건식이 true 일 경우 실행되는 것이다. 이 조건식이 false 일 경우는 else의 문장이 실행된다.

 

사실 else 문 없이 if문 만으로도 사용이 가능하다. if 조건식이 false 일 경우 그냥 괄호안의 내용은 실행이 안되는 것이다.

 

조건식은 다음의 형태이다.

 

if(조건식)

{

    수행문A; // 조건식이 true인 경우

}

else

{

    수행문B; // 조건식이 false인 경우

}

 

자바 else-if 조건문

else if 조건문은 else 조건문에 없었던 조건식을 넣은 것이다.

 

예를 들어 점수별로 등급을 매긴다고 하자.

 

int score = 84;

if (score >= 90){
    System.out.println("1등급 입니다");
}
else if(score >=80){
    System.out.println("2등급 입니다");
}
else if(score >=70){
    System.out.println("3등급 입니다");
}
else if(score >=60){
    System.out.println("4등급 입니다");
}
else{
    System.out.println("5등급 입니다");
}

 

 

 

플로우차트로 그리면 아래와 같다. if -> else if ... -> else 로 넘어갈 수록 조건식을 검사하다가 true가 나오면 수행문을 실행하고 종료하고 false면 다음 조건식으로 넘어가 검사한다. 모든 조건식이 false면 else문을 실행하고 종료한다.

플로우차트
플로우차트

위의 마름모 조건식들이 마치 체인처럼 이어져 있다가 하나의 조건식이라도 true 참이 되면 모든 마름모 조건식들을 뛰어 넘는다. 조건식이 하나만 맞으면 남아있는 조건식들은 검사하지 않는다. 따라서 여러개의 옵션 중에 선택해야 할 경우 등에 사용할 수 있다. 또는 아래 소스코드 처럼 숫자의 범위에 따른 처리도 가능하다.

 

자바 소스코드는 아래와 같다 점수에 따른 등급을 설정하고 있다. 위에서부터 비교하므로 90점대 80점대 70점대에 따른 등급을 정해줄 수 있다.

 

결과창

조건문은 조건 연산자를 조합하여 다양한 방법으로 사용이 가능하다. 여러 방법을 연구하면 실력향상에 도움이 된다. (짝수만 홀수만 걸러내는 소스코드 등)

728x90

공유하기

facebook twitter kakaoTalk kakaostory naver band

본문과 관련 있는 내용으로 댓글을 남겨주시면 감사하겠습니다.

비밀글모드