1. 조건문
1) if 문
주로 조건식이 범위와 관련된 경우에 사용한다.
if (조건식1) {
수행문1;
} else if (조건식2) {
수행문2;
} else {
수행문3;
(예제)
int age = 9;
int charge = 0;
if (age < 8) {
charge = 1000;
System.out.println("미취학 아동입니다.");
} else if (age < 14) {
charge = 2000;
System.out.println("초등학생입니다.");
} else if (age < 20) {
charge = 2400;
System.out.println("중고등학생입니다.");
} else {
charge = 3000;
System.out.println("성인입니다.");
}
System.out.prinln("요금은 " + charge + "원 입니다.");
간단한 if - else 조건문을 조건 연산자로 구현할 수 있다.
if (a > b) max = a; else max = b; |
max = (a > b) ? a : b; |
2) switch - case 문
조건식의 결과가 특정 정수 값 또는 특정 문자열 값과 같을 경우 사용한다.
case문에서 수행문이 끝나면 반드시 break; 를 써줘야 한다. 그렇지 않으면 break;를 만날 때까지 계속 아래의 수행문을 수행한다.
다음과 같이 여러 case를 한 번에 묶을 수도 있다.
(예제)
int month = 1;
int day = 0;
switch(month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day = 31;
break;
case 2:
day = 28;
break;
case 4:
case 6:
case 9:
case 11:
day = 30;
break;
}
System.out.println("day = " + day);
final int Gold = 1;
final int Silver = 2;
final int Bronze = 3;
int medal = 1;
switch(medal) {
case Gold:
System.out.println("금메달입니다.");
break;
case Silver:
System.out.println("은메달입니다.");
break;
case Bronze:
System.out.println("동메달입니다.");
break;
default:
System.out.println("금메달입니다.");
}
위와 같이 마지막에 default를 써줄 수도 있다. 위의 case를 모두 만족하지 않으면 default의 수행문이 실행된다.
JAVA 버전 7부터는 case 값에 문자열을 사용할 수 있지만, 위의 예제처럼 웬만하면 숫자로 비교하는 것이 좋다.
2. 반복문
1) while 문
조건이 "참"인 동안 수행문을 반복해서 수행한다.
주로 조건식이 true, false로 나타난다.
while (조건식) {
수행문 1;
...
}
수행문2;
(예제)
int i = 0;
final int count = 10;
int sum = 0;
while (i <= count) {
sum += i;
++i;
}
System.out.println("1부터 " + count + "까지의 합 = " + sum);
2) do - while 문
먼저 수행문을 한 번 수행하고 조건식을 체크한다.
수행문이 반드시 한 번 수행되어야 하는 경우에 사용한다.
do {
수행문1;
...
} while (조건식);
수행문2;
(예제)
int i = 2;
do {
System.out.println(i);
++i;
} while (i < 1);
이 예제는 조건식이 처음부터 만족되지 않았지만, do 안에 있는 수행문은 한 번 실행된다.
3) for 문
가장 많이 사용되는 반복문으로, 주로 조건이 횟수인 경우에 사용한다.
for문 안에 초기식, 조건식, 증감식을 모두 쓰기 때문에 코드가 간결해질 수 있다.
for문 안에서만 쓰이는 변수는 초기식에서 선언과 초기화를 한번에 해주는 것이 좋다.
for (초기식 ; 조건식 ; 증감식) {
수행문1;
...
}
수행문2;
(예제)
for (int num = 1; num <= 5; num++) {
System.out.println(num);
}
for (int i = 1; i <= 9; i++) {
System.out.println(i + "단");
for (int j = 1; j <= 9; j++) {
System.out.println(i + "x" + j + "=" + i*j);
}
}
구구단 예제 코드이다.
int total = 0;
for (int i = 1; i <0 100; i++) {
if (i % 2 ==0) continue;
total += i;
System.out.println(total + "i = " i);
}
total = 0;
for (int i = 1; i <= 100; i++) {
if (i % 2 == 1) {
total += i;
System.out.println(total + "i = " i);
}
}
위의 예제에서 continue; 는 아래의 실행문을 실행하지 않고 증감식으로 넘어가라는 의미이다.
위의 for문과 아래의 for문은 100 이하의 홀수끼리만 더하라는 의미로 결과가 같은 코드이다.
int total = 0;
for (int i = 1; i <= 100; i++) {
if (i == 50) break;
total += i;
System.out.println(total + " i = " + i);
}
System.out.println("total = " + total);
위의 예제와 같이 for문에서 break; 를 쓰면 loop를 벗어난다. 즉, i가 50이 되면 그 이상 증가하지 않고 loop를 빠져나와서 아래의 print문을 실행하는 것이다.