HardTech

[JAVA]#6 조건문에 대해서 배워보자! 본문

프로그래밍/자바 [JAVA]

[JAVA]#6 조건문에 대해서 배워보자!

HardTech 2016. 12. 2. 23:08

안녕하세요! HardTech의 프로그래머 HostUnknown입니다.

오늘도 여느 때와 다름없이 Java 프로그래밍 강좌를 포스팅해봅니다.


이번 강좌에서는 조건문에 대해서 배워볼겁니다.

조건문? 조건문이 무엇일까요?

무언가 통과시키는 조건이 있을 것 같지 않나요?

맞습니다. 조건문은 일정 조건을 걸어 놓고 그 조건이 참(true)이면 통과,

거짓(false)이면 다시 조건문 처음으로 돌아가는 성질을 가졌습니다.


조건하면 가장 먼저 떠오르시는 것이 있을 것입니다.

'만약에' 입니다.

Java에서는 이 만약에를 뜻하는 조건문을 if-then문이라고 합니다.

이 if-then문은 조건이 참이면 그 문의 블록(대괄호 안)에 있는 것들을 실행시키는

역할을 합니다. 밑에 예제 소스코드 보여드리겠습니다.

import java.util.Scanner; class ifnum1 { public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.println("입력한 수가 5이면 확인합니다. 정수를 입력하세요."); int num = sc.nextInt(); if(num == 5) println("입력한 수는 5입니다."); } }

이렇게 if-then문을 사용할 수 있습니다.

해석해보겠습니다.

println에서 말하고 있는 것처럼 입력한 수가 5이면 확인한다고 합니다.

그 밑의 if-then문을 보시죠.

if 다음에 바로 괄호가 있죠? 그 안에는 num == 5라고 쓰여 있습니다. 이게 무슨 뜻일까요?

눈치가 있는 분들은 바로 알아 맞추실 수 있습니다.

바로 변수 num의 값이 5라면 밑에 있는 println을 실행한다라는 뜻입니다.

그런데 5가 아닌 다른 수를 입력한다면? 프로그램이 그냥 종료되어 버립니다.

그래서 if-then-else문이 있습니다.


그리고 여기서는 if-then문 아래에 대괄호로 블럭을 만들지 않았습니다.

왜냐하면 if-then문 아래에 실행할 것이 하나밖에 없기 때문입니다.

하지만 두 줄 이상이면 무조건 대괄호로 블럭을 치고 나서 그 안에 적어야 합니다.

모든 조건문이 이 규칙을 지켜야 합니다.


if-then-else문을 설명하기 전에 조건문에서 아주 많이 쓰이고 연산에서도 많이 쓰이는

'관계연산자', '등가연산자', '논리부정연산자', '일반 연산자'등을 설명해드리겠습니다.


관계연산자


x<y [x가 y보다 작으면 참, 그렇지 않으면 거짓]

x>y [x가 y보다 크면 참, 그렇지 않으면 거짓]

x<=y [x가 y보다 작거나 같으면 참, 그렇지 않으면 거짓]

x>=y [x가 y보다 크거나 같으면 참, 그렇지 않으면 거짓]


등가연산자


x == y [x와 y가 같으면 참, 그렇지 않으면 거짓]

x != y  [x와 y가 다르면 참, 그렇지 않으면 거짓]


논리부정연산자

!x [x가 거짓이면 참, 참이면 거짓]


일반 연산자


[가감연산자]


x+y [x에서 y를 더한 값을 생성]

x-y  [x에서 y를 뺀 값을 생성]


[승제연산자]


x*y [x와 y를 곱한 값을 생성]

x/y [x를 y로 나눈 몫을 생성(x, y가 모두 정수이면 소수점 이하는 버림)]

x%y [x를 y로 나눈 나머지를 생성]


[단항부호연산자]


+x [x 자체의 값을 생성]

-x  [x의 부호를 반전시킨 값을 생성]


이 부호들은 프로그래밍하면서 필수적으로 외워야 할 연산자들입니다.

꼭! 외우세요.

이제 if-then-else문을 알려드리겠습니다.

if-the-else문은 if의 조건이 거짓이면 else 블록 내에 있는 것들을 실행시킵니다.

if의 조건이 참이라면 if 블록 내의 것들을 실행시키고 else 블록은 점프해서

if-then-else문을 종료시킵니다.

예제소스 밑에 갑니다.

import java.util.Scanner; class ifelsenum { public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.println("입력값이 5이면 확인, 아니면 프로그램이 종료됩니다. 정수를 입력하세요."); int num = sc.nextInt(); if(num == 5) { System.out.println("당신이 입력한 수는 5입니다."); try{ Thread.sleep(3000); }catch(InterruptedException e) {} } else { System.out.println("당신이 입력한 수는 5가 아닙니다."); try{ Thread.sleep(3000); }catch(InterruptedException e) {} } } }

if-then-else문 안 블럭에 조금 생소한 게 나왔습니다.

try-catch문입니다.

사실 이 문은 제가 3초동안 대기시킬려고 추가한 겁니다.

try-catch문 안에 보면 Thread.sleep(3000);이라는 게 있습니다.

이건 3초동안 대기 상태에 있으라는 것입니다.

그런데 왜 3000이냐? 단위는 밀리세컨드입니다.

1초면 1000, 2초면 2000, 3초면 3000 이렇게 합니다.

그런데 왜 try-catch문을 사용했냐?

그 이유는 사실 sleep을 시키면 sleep시킨 메소드가 동작을 멈춰버립니다. 메소드가 동작을

멈춰버리면 컴파일할 때 InterruptedException 오류가 납니다. 그래서

try-catch문을 사용한겁니다.

이 try-catch문의 역할은 프로그램의 예외를 잡아주는 역할을 합니다.

만약 컴파일 중 오류가 catch 괄호 안에 있는 것처럼 InterruptedException 오류가 났으면

catch문 안에 그 오류가 났을 때 대처할 내용을 써줘서 다시 원래대로 되돌려 보내는 역할을

합니다. try 안에는 예외 오류가 생기는 구문을 넣습니다.

본론으로 돌아와서 소스를 해석해봅시다.

일단 5를 입력하면 확인하고 프로그램이 3초 뒤에 종료됩니다.

5가 아니면 아니라고 하고 3초 뒤에 종료됩니다.

else문이 if문 바로 밑에 하나 있죠?

이렇게 둘이 붙여줘야 제대로 된 if-then-else문이 됩니다.

그 안의 내용들은 너무 쉬워서 다 아실 겁니다. 왜냐하면 이미 한 번 설명했었거든요.

지금까지 잘 따라오셨다면 어렵지 않으실겁니다.


이제 다중 if문을 배워볼겁니다.

다중 if문? 딱 봐도 if문이 여러 개 연결되어 있을 것 같은 느낌이 듭니다.

맞습니다. if문이 여러 개 연결되어 있어서 다중 if문입니다.

예제 소스코드 나갑니다.

import java.util.Scanner;

class multiif {
	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("정수값을 입력하세요.");
		int num = sc.nextInt();
		
		if (num > 0)
		{
			System.out.println("이 값은 양수입니다.");
			try{
				Thread.sleep(3000);
			}catch(InterruptedException e) {}
		}
		else if (num < 0)
		{
			System.out.println("이 값은 음수입니다.");
			try{
				Thread.sleep(3000);
			}catch(InterruptedException e) {}
		}
		else
		{
			System.out.println("이 값은 0입니다.");
			try{
				Thread.sleep(3000);
			}catch(InterruptedException e) {}
		}
	}
}

많이 깁니다. 해석해봅시다.

일단 정수값을 입력하라고 합니다.

만약에 제가 2를 입력했습니다.

그러면 첫번째 if문에 걸립니다. 첫번째 if문의 조건은 num > 0입니다.

제가 입력한 수는 0보다 크기 때문에 if문 블록 안에 있던 구문들이 실행됩니다. 그리고 3초 지나고 프로그램이 종료됩니다.

프로그램을 다시 실행시켜서 이번에는 -5를 입력했습니다. if문은 조건이 맞지 않아 점프합니다.

그 다음 문은 else if문입니다. else if문의 조건은  num < 0입니다. 제가 입력한 수는 0보다 작기

때문에 여기서 프로그램이 종료됩니다.

또 다시 프로그램을 실행시켜서 이번에는 0을 입력했습니다.

그렇다면 앞의 두 조건과는 어느 하나도 맞지 않습니다.

둘 다 점프해서 else문까지 왔습니다.

제가 입력한 수는 0이기 때문에 여기서 프로그램이 종료됩니다.

다중 if문은 이렇게 사용하는 것입니다.

첫번째 조건이 거짓이면 그 다음 조건, 그 조건이 거짓이면 또 그 다음 조건 이런 식으로

진행되는 것이 다중 if문입니다.

문법은 처음에는 if문을 써서 최초 조건을 써넣습니다.

만약에 if문이 거짓이 되면 그 다음 비교할 조건을 else if문을 써서 집어 넣습니다.

만약에 2번째로 쓴 else if문이 거짓이 됐을 때 비교할 그 다음 조건을 또 else if문을 써서

집어 넣습니다. 이렇게 조건을 다 쓰고 나서 지금까지 쓴 모든 조건과 비교해 보았을 때

어느 하나도 참이 아닌 거짓이라면 비교할 조건을 else문을 써서 넣습니다.

그렇다면 구조가 이렇게 됩니다.

              if문

      else if문

      else if문

      else if문

      .....

      else문


이렇게 구조가 이루어집니다.
꼭 기억하세요.
if문이 거짓이면 2번째 else if문, 2번째 문이 거짓이면 3번째 else if문..... 이렇게 가다
어느 조건도 맞지 않으면 else문의 조건과 비교한다.
이렇게 알고 계시면 됩니다.

긴 강좌였습니다.
댓글은 프로그래머인 저에게 프로그램을 더 잘 만들 수 있게 해줍니다.
공감도 많이 눌러주세요!!!


작성자 : [HardTech][프로그래머] HostUnknown



반응형
Comments