본문 바로가기
IT 돌고래/JAVA

[JAVA]자바의 일곱걸음 : 조건문

by IT돌고래 2020. 1. 22.
반응형

안녕하세요.

IT 돌고래입니다.

자바의 조건문에 대해서 이야기를 해보겠습니다.


프로그램을 만들기 위해서는 제어가 필요합니다. 제어를 하려면 만약에 어떤 상황이면 어떻게 움직이거나 행동하고 또 어떤 다른 상황이면 어떻게 실행이 되는지에 대해 정해져 있어야 그 상황이 오면 정해놓은 실행 방법에 따라 실행이 될 것입니다.  만약에 이런 상황이면 이렇게 동작하라고 하는 명령문은 Java에서 두 가지가 있습니다.

if문switch문 두 개를 활용하여 프로그램을 분기를 할 수가 있습니다. 이 두 개의 명령어를 조건문이라고 합니다.

 

1. if문

if문은 if(조건) 형식으로 씁니다. 그리고 if문과 같이 쓸 수 있는 구문들이 있습니다. 

한번 소스로 확인해 보겠습니다.

int a = 10;

// if문 혼자 단독으로 사용가능
if(a == 10)   // 조건에는 관계연산자 단독으로 오거나 논리연산자를 넣어서 관계연산자를 묶어서 제어가 가능
{
	
}

// if문과 else문 사용
if(a == 10)  // a가 10이면 if문안에 명령어들을 실행
{

}
else // a가 10이 아니면 else문안에 명령어들을 실행
{

}

//if문과 else if 문과 else문 사용
if(a == 10)   //a가 10이면 실행
{

}
else if(a == 9) //a가 9이면 실행
{

}
else // a가 10또는 9가 아니면 실행
{

}

 

위에 소스처럼 if문은 3가지 형태로 사용될 수 있습니다. if문, if-else문, if-else if-else문으로 사용하여 조건문을 만들어서 분기를 할 수 있습니다.

여기서 if-else if-else문 같은 경우에는 else if가 무한 확장을 할 수 있습니다. 한마디로 개발자 마음대로 넣으셔서 사용하시면 됩니다. if-else if-else if...-else처럼 원하시는 조건만큼 만드셔서 사용을 할 수가 있습니다.

 

2. switch 문

switch문은 조건 중에 같다는 조건으로 어떤 값이 들어오면 그 값이랑 같은 case를 찾아서 그 case에 있는 명령어들을 실행하게 됩니다.

int a = 5;
//switch 문
switch(a)
{
    case 1:
    System.out.println("값이 1입니다.");
    break;
    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 :
    System.out.println("값이 6이상입니다.");
}
//값이 5입니다. (출력)

 

위에 소스를 보면 switch문은 case를 두어 값이 들어오면 맞는 case가 나올 때까지 탐색을 하고 맞는 케이스가 나오면 그 케이스에 명령을 실행하게 됩니다. 만약에 case가 없다면 default가 실행이 되게 됩니다.

여기서 case도 무한 확장이 됩니다. 개발자가 원하는 만큼 case를 넣어주시면 됩니다. 하지만 case를 너무 많이 넣어주면 case를 찾는데 시간이 많이 걸리고 프로그램의 속도 저하가 될 수 있습니다.

 

3. 중첩 조건문

if문이나 switch문을 사용할 때 중첩으로 조건문을 사용해서 분기를 하고 제어를 할 수가 있습니다.

int a = 5;
int b = 10;
int c = 15;

if(a == 5)
{
    if(b == 10)
    {
    	if(c == 15)
        {
        	
        }
        else
        {
        
        }
    }
}

 

int a = 5;
int b = 10;
int c = 15;

if(a == 4)
{
    if(b == 8)
    {
        if(c == 14)
        {
        
        }
    }
    else if(b == 9)
    {
        if(c == 15)
        {
        
        }
    }
    else
    {
    }
}
else if(a == 5)
{
     if(b == 10)
     {
     
     }
     else
     {
     }
}
else
{
    switch(c)
    {
         case 10:
         break;
         case 15:
         break;
         default :
         break;
    }
}

 

위에 소스들을 보면 if문안에 if문에 또 있거나 아니면 if-else문이 있고 if-else if- else문 안에서 else if안에 if-else문이 있을 수 있고 else안에 switch문이 있을 수 있습니다. 이렇게 다용한 조합을 사용하여 조건문을 만들 수 있습니다.

조건문을 원하는 데로 중첩되게 구현을 할 수가 있습니다.

이렇게 자유롭고 원하는 데로 구현을 할 수 있다고 하는 것은 좋아 보이지만 실상 프로그램을 구현하는데 어려운 부분이기도 합니다. 정해진 룰보다는 개발자가 알아서 조건문을 활용해서 구현을 해야 하기 때문입니다.

 

//<두개의 숫자를 받아서 사칙연산 하는 프로그램>
Scanner sc = new Scanner(System.in);// 입력을 하기위해 변수 생성
int num1, num2; // 정수 num1, num2하는 변수 생성
String op;  // 문자열 op라고 하는 변수 생성
System.out.print("첫번째 숫자를 입력하세요 : ");// 콘솔출력
num1=sc.nextInt(); // num1 변수에 입력변수 sc를 활용하여 숫자를 대입
System.out.print("두번째 숫자를 입력하세요 : ");//출력
num2=sc.nextInt();//num2 변수에 입력변수 sc를 활용하여 숫자를 대입	
System.out.print("연산자를 입력하세요 : ");//콘솔출력
op = sc.next();//op변수에 입력변수 sc를 활용하여 문자열 값을 대입				
if(op.equals("+")) // op변수가  "+"이면 실행
{
    System.out.println("결과 값 :"+(num1+num2));// 변수 num1과 num2을 더하여 출력
}
else if(op.equals("-"))// op변수가 "-"이면 실행
{
    System.out.println("결과 값 :"+(num1-num2));// 변수 num1과 num2을 빼서 출력
}
else if(op.equals("*"))//op변수가 "*" 실행
{
    System.out.println("결과 값 :"+(num1*num2));// 변수 num1과 num2을 곱해서 출력
}
else if(op.equals("/"))//op변수가 "/" 실행
{
    System.out.printf("결과 값 : %.2f\n",(float)((float)num1/(float)num2));
    // 변수 num1을 정수에서 실수로 형변환 하고 num2을 정수에서 실수로 형변환을 한후 나누기 후에 출력
}
else
{
    System.out.println("잘못된 연산자입니다.");
}
				

위에 소스를 보면 주석을 달아서 내용을 읽어 보시면 이해를 하실 수 있습니다. 이 소스를 추가적으로 설명드리면 if-else if-else문을 사용하여 분기를 했고 문자열인 String을 비교하려면 ==이 아니라 변수. equals(문자열) 이런 형식으로 문자열을 비교를 해야 합니다.

또 마지막 나눗셈은 정수끼리 나누더라도 소수가 발생할 수가 있기 때문에 실수형인 float을 형 변환을 해서 연산을 하도록 했습니다.

 

//<두개의 숫자를 받아서 사칙연산 하는 프로그램>
Scanner sc = new Scanner(System.in);// 입력을 하기위해 변수 생성
int num1, num2; // 정수 num1, num2하는 변수 생성
String op;  // 문자열 op라고 하는 변수 생성
System.out.print("첫번째 숫자를 입력하세요 : ");// 콘솔출력
num1=sc.nextInt(); // num1 변수에 입력변수 sc를 활용하여 숫자를 대입
System.out.print("두번째 숫자를 입력하세요 : ");//출력
num2=sc.nextInt();//num2 변수에 입력변수 sc를 활용하여 숫자를 대입
System.out.print("연산자를 입력하세요 : ");//콘솔출력
op = sc.next();//op변수에 입력변수 sc를 활용하여 문자열 값을 대입
switch (op) {
    case "+":
        System.out.println("결과 값 :"+(num1+num2));// 변수 num1과 num2을 더하여 출력
        break;  //switch문 탈출
    case "-":
        System.out.println("결과 값 :"+(num1-num2));// 변수 num1과 num2을 빼서 출력
        break;  //switch문 탈출
    case "*":
        System.out.println("결과 값 :"+(num1*num2));// 변수 num1과 num2을 곱해서 출력
        break;  //switch문 탈출
    case "/":
        System.out.printf("결과 값 : %.2f\n",(float)((float)num1/(float)num2));
        // 변수 num1을 정수에서 실수로 형변환 하고 num2을 정수에서 실수로 형변환을 한후 나누기 후에 출력
        break;  //switch문 탈출
    default:
        System.out.println("잘못된 연산자 입니다.");
        break;  //switch문 탈출
}

위 소스를 보면 주석을 달아 설명을 했습니다. 이 소스를 추가적으로 설명을 하면 switch문으로 분기를 하였고 문자열을 값으로 받아서 분기를 해서 사칙연산을 실행하고 출력을 하게 됩니다.

 

 

※ 긴 글을 읽어 주셔서 감사합니다. Java를 계속 진행해 나가겠습니다.

 

★ 이글 이후에는 Java 반복문에 대한 내용을 정리해서 처음부터 정리를 할 예정입니다. 많은 관심 부탁드립니다.



반응형

댓글