Projects/자바 슬라임 게임 만들기 Show 2022. 1. 24. 23:22
다음과 같은 상상을 해 보자. "돈이 있으면 택시를 타고 가고 돈이 없으면 걸어 간다." 위와 같은 상황은 우리 주변에서 언제든지 일어 날 수 있는 상황중의 하나이다. 프로그래밍도 위처럼 조건을 판단해서 그 상황에 맞게 처리해야 할 경우가 생기게 된다. 이렇듯 조건을 판단하여 해당 조건에 맞는 상황을 수행하는데 쓰이는 것이 바로 if문이다. 위와 같은 상황을 자바에서는 다음과 같이 만들 수 있다.
다음의 구조가 if와 else를 이용한 기본적인 구조이다.
조건문을 테스트 해서 참이면 if문 바로 다음의 문장들을 수행하고 조건문이 거짓이면 else문 다음의 문장들을 수행하게 된다. 조건문이란 무엇인가?
따라서 위의 예에서 보았던
if 조건문은 조건문에 참일시에 수행된다. 비교연산자(비교연산자의 대상은 수치타입이여야 한다)하지만 조건판단을 하는 경우는 자료형(boolean)보다는 비교 연산자(<, >, ==, !=, >=, <=)를 쓰는 경우가 훨씬 많다.
예를 통해서 위의 연산자들에 대해서 알아보자.
x에 3을 y에 2를 대입한 다음에 x > y라는 조건문을 출력하니 true가 출력된다. 그 이유는 x > y라는 조건문이 참이기 때문이다.
위의 조건문은 거짓이기 때문에 false가 출력된다.
x와 y는 같지 않다. 따라서 위의 조건문은 거짓이다.
x와 y는 같지 않다. 따라서 위의 조건문은 참이다. 앞의 경우를 다음처럼 바꾸어 보자. "만약 3000원 이상의 돈을 가지고 있으면 택시를 타고 그렇지 않으면 걸어가라" 위의 상황을 다음처럼 프로그래밍 할 수 있을 것이다.
money >= 3000 이란 조건문이 거짓이 되기 때문에 else문 다음의 문장을 수행하게 된다. and(&&), or(||), not(!)또다른 조건 판단에 쓰이는 것으로 and, or, not이란 것이 있다. 각각의 연산자는 다음처럼 동작을 한다.
다음의 예를 통해 위의 사항을 반영해 보도록 하자. "돈이 3000원 이상 있거나 풀러줄 시계가 있다면 택시를 타고 그렇지 않으면 걸어가라"
money는 2000이지만 watch가 true이기 때문에 containsList 자료형에는 해당아이템이 있는지 조사하는 contains라는 메소드가 있다. contains메소드는 조건문에 많이 활용되는데 어떻게 활용이 되는지 살펴보도록 하자. 다음의 경우를 예제에 적용시켜 보자. "만약 주머니에 돈이 있으면 택시를 타고, 없으면 걸어가라“
pocket 리스트에 안에 'money'가 있으므로 else if (다중 조건 판단)if와 else만을 가지고서는 다양한 조건 판단을 하기가 어렵다. 다음과 같은 예만 하더라도 if와 else만으로는 조건 판단에 어려움을 겪게 된다. "지갑에 돈이 있으면 택시를 타고, 지갑엔 돈이 없지만 시계가 있으면 택시를 타고, 돈도 없고 시계도 없으면 걸어가라“ 위의 문장을 보면 조건을 판단하는 부분이 두 군데가 있다. 먼저 지갑에 돈이 있는지를 판단해야 하고 지갑에 돈이 없으면 다시 시계가 있는지를 판단한다. if와 else만으로 위의 문장을 표현 하려면 다음과 같이 할 수 있을 것이다.
언뜻 보기에도 이해하기가 쉽지 않고 산만한 느낌이 든다. 위와 같은 점을 보완하기 위해서 자바는 다중 조건 판단을 가능하게 하는 위의 예를
즉,
위에서 보듯이 else if는 개수에 제한 없이 사용할 수 있다. 2) switch/case 문switch/case 문은 if 문과 비슷하지만 좀 더 정형화된 모습의 제어문이다. switch/case 문의 구조는 다음과 같다.
입력변수의 값과 case의 입력값(입력값1, 입력값2, ...)을 비교하여, 입력변수의 값과 case의 입력값이 같은 값이 있다면 해당 case문 하위의 문장이 실행된다. case문마다 break 라는 문장이 있는데 해당 case문을 실행 한 뒤 switch문을 빠져나가기 위한 것이다. 만약 break 문이 빠져 있다면 그 다음의 case 문이 실행되게 된다. switch/case 문을 가장 잘 설명해주는 다음의 예를 보자. SwitchDemo.java
switch문의 입력으로 1이라는 숫자가 올 경우 "January"라는 문자열이 12가 입력으로 올 경우 "December"라는 문자열이 출력되는 예제이다. 위의 예는 month가 8로 고정되어 있기 때문에 "August"라는 문자열이 출력될 것이다. 위 switch문은 month의 값이 1이면 case 1: 문장이 실행되고 2이면 case 2: 문장이, 3이면 case 3: ... 이런식으로 수행되게 된다. 만약 month에 1에서 12사이의 숫자가 아닌 다른 값이 저장되어 있다면 default: 문장이 수행될 것이다. 위와 같이 입력값이 정형화되어 있는 경우 if문보다는 switch/case문을 쓰는것이 가독성에서 좀 더 유리하다. switch/case문은 if else 구조로 변경이 가능하지만 if else 구조로 작성된 모든 코드를 switch 문으로 변경할 수는 없다. 이렇게 굳이 switch/case 문 없이도 if/else로 충분히 코드를 작성할 수 있기 때문에 switch/case 문을 지원하지 않는 언어들도 있다. (※ 파이썬은 switch/case문이 없다.) 마지막 편집일시 : 2013년 8월 23일 9:54:27 오전 |