본문으로 바로가기

조건문(if, else ~if, switch문)

category 프로그래밍/java 2017. 8. 23. 23:10

제어문(조건문)


어떤 상황을 판단하여 결과를 true 또는 false를 반환함.

일상 생활에서 제어문의 필요성을 찾아 보면 쉽게 이해 할 수 있음.

예를 들어 감기가 심하여 회사에 갈까말까?

  회사에 출근하면 평소와 같은 회사 업무를 할 것이고회사에 결근을 하게 되면 그에 합당한 조치가 취해질 것이다예를 들어 부장님의 잔소리 등등..



루프문


일상 생활에서 반복적인 일이 많다예를 들어 연말연시에 지인들한테 우편을 보낼 때 보내는 사람 주소를 반복해서 봉투에 기입해야 한다.

또는 겨울철 김장을 할 때 절인 배추에 김치속을 반복적으로 넣어야 한다.

더욱 간단하게는 구구단을 보더라도 어떤 규칙에 의해 반복적인 연산을 한다.

프로그래밍에서도 반복적인 작업이 상당히 많이 발생되어 진다.

이러한 반복적인 행위에 대해서 루프문을 이용하여 프로그래밍 한다.








1.제어문의 기초이자 가장 많이 사용되는 if


조건의 값(true or false)에 따라 작업을 수행



구문


if(조건)

   문장;  ---> 조건이 참일때 실행됨

if (좋은 곳에 취업하면)

여행을 떠난다


if문을 사용하면 (보다 좋은 곳에 취업을 했다)가 참인 경우에만 여행을 떠난다는 작업을 수행할 수 있다.

취업을 하지 못하면 여행을 떠난다라는 문장은 실행되지 않는다.


sample1. if문 사용하기

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;


public class Sample1 {


public static void main(String[] args) throws IOException

{

// TODO Auto-generated method stub

System.out.println("정수를 입력하십시오.");

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String str = br.readLine();

int res = Integer.parseInt(str);

if(res == 1)

System.out.println("1이 입력되었습니다.");

System.out.println("처리를 종료합니다.");

}


}


sample1의 첫번 째 실행 화면


정수를 입력하십시오.

1

1이 입력되었습니다.

처리를 종료합니다.



sample1의 두번째 실행 화면


정수를 입력하십시오.

10


처리를 종료합니다.



false  if (res == 1) {

         System.out.printin("1이 입력되었습니다.");  ----> true인경우에만 실행됨

        system.out.printin("처리를 종료합니다.")
       }


만약 블록으로 감싸지 않은경우 if문 밖에서 실행된다.


2. if ~ else문


if ~else문의 원리 이해하기

if문은 조건이 참인 경우엔만 특정 코드를 실행시켰다. 하지만 조건이 false인 경우에도 특정 코드를 실행시키는 if문이 있다.


if~else문

if(조건)

 문장 1;

else

 문장 2;



조건이 참(ture)인 경우 문장 1을 실행시킨다. 조건이 거짓(false)이면 문장2를 처리한다.

if(조건){

  문장 1;

  문장 2;

..

}

else

  문장 3;
  문장 4;

..

}



sample3. if~else사용하기


import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;


public class Sample3 {


public static void main(String[] args) throws IOException

{

// TODO Auto-generated method stub

System.out.println("정수를 입력하십시오.");

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String str = br.readLine();

int res = Integer.parseInt(str);

if(res == 1)

{

System.out.println("1이 입력되었습니다.");

}

else 

{

System.out.println("1이외 값이 입력되었습니다.");

}

}

}


Sample3의 첫 번째 실행 화면


정수를 입력하십시오.

1

1이 입력되었습니다.



Sample3의 두 번째 실행 화면


정수를 입력하십시오.

10

1 이외의 값이 입력되었습니다.



여러 조건을 판단하기

if ~ else, if ~ else 문의 원리 이해하기


if(조건1) --- 조건1이 참일때 실행된다.

{

문장1;
문장2;

}

else if(조건 2) ---조건1이 거짓이며 조건2가 참일때 실행된다.

{

문장3;

문장4;

}

else if(조건 3) - 조건 2가 거짓이며 조건3이 참일때 실행

{

}

else--- 모든 조건이 거짓 일때
{

}


sample4.java  if ~ case  if ~case if  if ~ case 문 사용하기




import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;


public class Sample4 {


public static void main(String[] args) throws IOException

{

// TODO Auto-generated method stub

System.out.println("정수를 입력하십시오.");

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String str = br.readLine();

int res = Integer.parseInt(str);

if(res == 1)

{

System.out.println("1이 입력되었습니다.");

}

else if(res==2)

{

System.out.println("2가 입력되었습니다.");

}

else

{

System.out.println("1혹은 2를 입력하십시오.");

}

}

실행결과

첫번째 실행 화면

정수를 입력하십시오.
1

1이 입력되었습니다.

두번째 실행 화면

정수를 입력하십시오

2

2가 입력되었습니다.

세번째 실행 화면

정수를 입력하십시오.

3

1 혹은 2를 입력하십시오



switch문


switch(식) {

case 값 1 : 

문장 1;  --------식(expression)의 평가(evaluation)가 1인 경우 실행된다.

...

break;


case 값 2: --------식(expression)의 평가(evaluation)가 2인 경우 실행된다.

 문장 2;

 ...

 break;
 ...


default : --------식(expression)의 평가(evaluation)가 모두 거짓 인 경우 실행된다.

  문장 D;

   ...
  break;




}

sample5 switch문 사용하기


import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;


public class Sample5 {


public static void main(String[] args) throws IOException

{

// TODO Auto-generated method stub

System.out.println("정수를 입력하십시오.");

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String str = br.readLine();

int res = Integer.parseInt(str);

switch(res) {

case 1:

System.out.println("1이 입력되었습니다.");

break;

case 2:

System.out.println("2가 입력되었습니다.");

default:

System.out.println("1 혹은 2를 입력하십시오");

}

}


만약에 break 문이 빠져 있다면

예를 들어 1을 입력했을때 

1
1이 입력되었습니다.

2가 입력되었습니다.

1 혹은 2를 입력하십시오.라고 전부 출력하게 된다.



입력 문자로 분기하기


sample6  '문자'로 분기하는 방법



import java.io.InputStreamReader;


public class Sample6 {


public static void main(String[] args) throws IOException

{

// TODO Auto-generated method stub

System.out.println("a혹은 b를 입력하십시오.");

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String str = br.readLine();

char res = str.charAt(0);      입력한 문자열의 첫 번째 문자를 뽑아 char형의 변수 res에 저장한다.

switch(res) {

case 'a':

System.out.println("a가 입력되었습니다.");

break;

case 'b':

System.out.println("b가 입력되었습니다.");

 break;

default:

System.out.println("a 혹은 b를 입력하십시오");

                        break;

}


}

}


첫번째 실행 결과

a혹은 b를 입력하십시오.

a

a가 입력되었습니다.



두번째 실행 결과
a혹은 b를 입력하십시오.
b
b가 입력되었습니다.

세번째 입력 결과
a혹은 b를 입력하십시오.
d
a 혹은 b를 입력하십시오

논리연산자와 조건연산자의 심화


Sample7 논리연산자로 조건 작성하기

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;


public class Sample7 {


public static void main(String[] args) throws IOException

{

// TODO Auto-generated method stub

System.out.println("당신은 남성입니까?" + "Y 또는 N을 입력하십시오");

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String str = br.readLine();

char res = str.charAt(0);

if(res == 'y' || res == 'Y') 

{

System.out.println("남성입니다.");

}

else if(res == 'n' || res == 'N' )

{

System.out.println("여성입니다.");

}

else

{

System.out.println("Y 또는 N을 입력하십시오");

}

}

}



Sample7의 첫 번째 실행 화면


당신은 남성입니까?Y 또는 N을 입력하십시오

Y

남성입니다.



Sample7의 두 번째 실행 화면


당신은 남성입니까?Y 또는 N을 입력하십시오

n

여성입니다.


Sample8 관계연산자 이용하기


import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;


public class Sample8 {


public static void main(String[] args) throws IOException

{

// TODO Auto-generated method stub

System.out.println("몇 번째 코스를 선택 하시겠습니까?\t" + "정수를 입력하시오.");

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String str = br.readLine();

int res = Integer.parseInt(str);

char ans = (res == 1) ? 'A' : 'B';

System.out.println(ans + "코스를 선택했습니다.");

}

}

실행화면


몇 번째 코스를 선택 하시겠습니까? 정수를 입력하시오.

1

A코스를 선택했습니다.


조건 연산자

조건 ? 참인 경우 식 : 거짓인경우 식 2


char ans = (res == 1) ? 'A' : 'B';

여기에서는 1을 선택했으므로 A가 되는 것이고 그 외에는 B가 되는 것이다.

 그것을 다시 변수 ans에 대입된다는 뜻



연습문제 1


1. 키보드로 정수 값을 입력받은 후, 상황에 따라 다음과 같은 메세지를 출력하라


값이 짝수인 경우 --------O는 짝수 입니다.

값이 홀수인 경우 --------O는 홀수 입니다.

단, O는 정수이다.


import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;


public class Exam02 {


public static void main(String[] args) throws IOException

{

// TODO Auto-generated method stub

System.out.println("정수를 입력하십시오");

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String str = br.readLine();

int num = Integer.parseInt(str);


int res = num % 2  ;

if (res == 0) 

{

System.out.println( num +"은 짝수입니다.");

}

else if(res == 1)

{

System.out.println( num + "은 홀수입니다.");

}

}


연습문제 2


키보드로 2개의 정수값을 입력받은 후 경우에 따라 다음과 같은 메세지를 출력하라

값이 같은 경우 ---- 두 숫자는 같습니다

값이 다른 경우 ---- O 보다 x이 큽니다.


(단, O, X는 정수이다)



import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;


public class Exam03 {


public static void main(String[] args) throws IOException

{

// TODO Auto-generated method stub

System.out.println("정수를 입력하십시오");

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String str1 = br.readLine();

String str2 = br.readLine();

int num1 = Integer.parseInt(str1);

int num2 = Integer.parseInt(str2);

Boolean res = num1 > num2;

if (num1 == num2)

{

System.out.println("두 숫자는 같습니다.");

}

else if(res == true)


{

System.out.print(num2 +"보다" + num1 + "이 큽니다.");

}

else if (res == false)

System.out.print(num1 +"보다" + num2 + "이 큽니다.");

}

}

}


연습문제 4 


키보드로 정수 값을 입력받은 후, 다음과 같은 메세지를 출력하는 코드를 작성하라


값이 0 ~ 10 인경우 '정답입니다/

그렇지 않은 경우 오답입니다.



import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;


public class Ex04 {


public static void main(String[] args) throws IOException

{

// TODO Auto-generated method stub

System.out.println("0에서 10까지 수를 입력하십시오");

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String str = br.readLine();

int num = Integer.parseInt(str);

switch (num) {

case 0:

System.out.println("정답입니다.");

break;

case 1:

System.out.println("정답입니다.");

break;

case 2:

System.out.println("정답입니다.");

break;

case 3:

System.out.println("정답입니다.");

break;

case 4:

System.out.println("정답입니다.");

break;

case 5:

System.out.println("정답입니다.");

break;

case 6:

System.out.println("정답입니다.");

break;

case 7:

System.out.println("정답입니다.");

break;

case 8:

System.out.println("정답입니다.");

break;

case 9:

System.out.println("정답입니다.");

break;

case 10:

System.out.println("정답입니다.");

break;

default:

System.out.println("오답입니다.");

break;

}

}

}

 


 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ex04 {

 public static void main(String[] args) throws IOException
 {
  // TODO Auto-generated method stub
 System.out.println("0에서 10까지 수를 입력하십시오");
 
 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
 String str = br.readLine();
 
 int res = Integer.parseInt(str);
 if(res >= 0 && res <=10)
 {

  System.out.println("정답입니다.");
 
else
 {
 System.out.println("오답입니다.");
 }
}
}


연습문제 5


키보드로 1에서 5까지 5단계 성적을 입력받은 후, 경우에 따라 다음과 같은 메세지를 출력하라


성적          메세지

1             노력합시다

2.             조금 더 노력합시다

3             더 높은 점수를 목표로 합시다

4            매우 잘 했습니다

5            매우 우수합니다



import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;


public class Exam05 {


public static void main(String[] args) throws IOException

{

// TODO Auto-generated method stub

System.out.println("정수를 입력하십시오");

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String str = br.readLine();

int num = Integer.parseInt(str);

switch (num) {

case 1:

System.out.println("노력합시다");

break;

case 2:

System.out.println("조금더노력합시다.");

break;

case 3:

System.out.println("더 높은 점수를 목표로 합시다.");

break;

case 4:

System.out.println("매우 잘했습니다.");

break;

case 5:

System.out.println("매우 우수합니다.");

break;

default :

System.out.println("1부터 5까지 숫자를 입력하세요.");

break;

}

}

}