프로그래밍도 조건을 판단해서 그 상황에 맞게 처리해야 할 경우가 생기게 된다. 이렇듯 조건을 판단하여 해당 조건에 맞는 상황을 수행하는데 쓰이는 것이 바로 if문이다.
"돈이 있으면 택시를 타고 가고 돈이 없으면 걸어 간다." 라는 상황을 다음과 같이 만들 수 있다.
boolean money = true;
if (money) {
System.out.println("택시를 타고 가라");
} else {
System.out.println("걸어가라");
}
if문의 기본 구조
if (조건문) {
<수행할 문장1>;
<수행할 문장2>;
...
} else {
<수행할 문장A>;
<수행할 문장B>;
...
}
조건문을 테스트해서 참이면 if문에 속한 문장들을 수행하고 조건문이 거짓이면 else문에 속한 문장들을 수행한다.
조건문
if (조건문) 에 사용한 조건문은 참과 거짓을 판단하면 문장이다.
위의 예에서는 money가 조건문이 된다.
boolean money = true;
if (money) {
...
money는 true이기 때문에 if문에 속한 문장들이 수행된다.
비교연산자
다음은 조건판단에 사용되는 비교 연산자들이다.
비교연산자 | 설명 |
x < y | x가 y보다 작다 |
x > y | x가 y보다 크다 |
x == y | x와 y가 같다 |
x != y | x와 y가 같지 않다 |
x >= y | x가 y보다 크거나 같다 |
x <= y | x가 y보다 작거나 같다 |
int x = 3;
int y = 2;
System.out.println(x > y); // true 출력
x에 3, y에 2를 대입한 다음에 x > y 라는 조건문을 출력하니 true가 출력된다. 왜냐하면 x > y 조건문이 참이기 때문이다.
System.out.println(x < y); // false 출력
위 조건문은 거짓이기 때문에 false가 출력된다.
System.out.println(x == y); // false 출력
x와 y는 같지 않다. 따라서 위의 조건문은 거짓이다.
System.out.println(x != y); // true 출력
x와 y는 같지 않다. 따라서 위의 조건문은 참이다.
"만약 5000원 이상의 돈을 가지고 있으면 택시를 타고 그렇지 않으면 걸어가라" 라는 상황은 다음처럼 코딩할 수 있다.
int money = 3000;
if (money >= 5000) {
System.out.println("택시를 타고 가라");
} else {
System.out.println("걸어가라");
}
money >= 5000 이란 조건문이 거짓이 되기 때문에 else문의 문장이 수행되어 "걸어가라"가 출력된다.
and(&&), or(||), not(!)
조건 판단에 쓰이는 and, or, not 연산자이다.
각각의 연산자는 다음처럼 동작한다.
- x && y - x와 y가 모두 참이어야 참이다
- x || y - x와 y 둘 중 적어도 하나가 참이면 참이다
- !x - x가 거짓이면 참이다
"돈이 5000원 이상 있거나 카드가 있다면 택시를 타고 그렇지 않으면 걸어가라" 라는 상황을 다음처럼 코딩할 수 있다.
int money = 3000;
boolean hasCard = true;
if (money>=5000 || hasCard) {
System.out.println("택시를 타고 가라");
} else {
System.out.println("걸어가라");
}
money는 3000으로 5000보다 작지만 hasCard가 true이기 때문에 money >= 5000 || hasCard 조건문이 참이 되어 "택시를 타고 가라"가 출력된다.
contains
List 자료형에는 해당 아이템이 있는지 조사하는 contains 메소드가 있다. contains 메소드는 조건문에 많이 활용된다.
"만약 주머니에 돈이 있으면 택시를 타고, 없으면 걸어가라" 를 다음처럼 코딩할 수 있다.
ArrayList<String> pocket = new ArrayList<String>();
pocket.add("paper");
pocket.add("handphone");
pocket.add("money");
if (pocket.contains("money")) {
System.out.println("택시를 타고 가라");
} else {
System.out.println("걸어가라");
}
pocket 리스트에 안에 'money'가 있으므로 pocket.contains("money")가 참이 되어 "택시를 타고 가라"가 출력된다.
else if (다중 조건 판단)
if와 else만으로는 다양한 조건 판단을 하기가 어렵다. 다음과 같은 예만 하더라도 if와 else만으로는 조건 판단에 어려움을 겪게 된다.
"지갑에 돈이 있으면 택시를 타고, 지갑엔 돈이 없지만 카드가 있으면 택시를 타고, 돈도 없고 카드도 없으면 걸어가라"
위의 문장을 보면 조건을 판단하는 부분이 두 군데가 있다. 먼저 지갑에 돈이 있는지를 판단해야 하고 지갑에 돈이 없으면 다시 카드가 있는지를 판단한다.
if와 else만으로 위의 문장을 표현 하려면 다음과 같이 해야한다.
boolean hasCard = true;
ArrayList<String> pocket = new ArrayList<String>();
pocket.add("paper");
pocket.add("handphone");
if (pocket.contains("money")) {
System.out.println("택시를 타고 가라");
} else {
if (hasCard) {
System.out.println("택시를 타고 가라");
} else {
System.out.println("걸어가라");
}
}
if와 else가 여러번 사용되어 이해하기가 쉽지 않고 산만한 느낌이 든다. 위와 같은 점을 보완하기 위해서 자바는 다중 조건 판단을 가능하게 하는 else if가 있다.
다음은 위 예에 else if를 적용한 코드이다.
boolean hasCard = true;
ArrayList<String> pocket = new ArrayList<String>();
pocket.add("paper");
pocket.add("handphone");
if (pocket.contains("money")) {
System.out.println("택시를 타고 가라");
} else if(hasCard) {
System.out.println("택시를 타고 가라");
} else {
System.out.println("걸어가라");
}
else if는 이전 조건문이 거짓일 때 수행된다. 따라서 위 예에서 pocket.contains("money") 문장이 거짓이므로 else if 문이 수행되고 hasCard가 true이므로 "택시를 타고 가라"가 출력된다.
if, else if, else의 기본 구조는 다음과 같다.
if (조건문) {
<수행할 문장1>
<수행할 문장2>
...
} else if (조건문) {
<수행할 문장1>
<수행할 문장2>
...
} else if (조건문) {
<수행할 문장1>
<수행할 문장2>
...
...
} else {
<수행할 문장1>
<수행할 문장2>
...
}
else if는 개수에 제한 없이 사용할 수 있다.
'Language > Java' 카테고리의 다른 글
[Java] while 문 (0) | 2022.08.01 |
---|---|
[Java] switch/case 문 (0) | 2022.08.01 |
[Java] 상수집합 (Enum)/형변환과 final (0) | 2022.08.01 |
[Java] 집합 (Set) (0) | 2022.07.31 |
[Java] 맵 (Map) (0) | 2022.07.31 |