if
문, switch
문) ]if
문조건식의 결과에 따라 블록 실행 여부가 결정된다.
조건식에는 true
또는 false
값을 산출할 수 있는 연산식이나, boolean
변수가 올 수 있다.
조건식이 true
이면 블록을 실행하고 false
이면 블록을 실행하지 않는다.
public class IfExample {
int score = 93;
if (score >= 90) {
System.out.println("점수가 90보다 큽니다.");
System.out.println("등급은 A입니다.");
}
if (score < 90) {
System.out.println("점수가 90보다 작습니다.");
System.out.println("등급은 B입니다.");
}
}
점수가 90보다 큽니다.
등급은 A입니다.
if-else
문
if
문은else
블록과 함께 사용되어 조건식의 결과에 따라 실행 블록을 선택한다.
if
문의 조건식이
true
이면 if
문의 블록이 실행되고,false
이면 else
문의 블록이 실행된다.조건식의 결과에 따라 이 두 개의 블록 중 어느 한 블록의 내용만 실행하고 전체 if
문을 벗어나게 된다.
public class IfElseExample {
int score = 85;
if (score >= 90) {
System.out.println("점수가 90보다 큽니다.");
System.out.println("등급은 A입니다.");
} else {
System.out.println("점수가 90보다 작습니다.");
System.out.println("등급은 B입니다.");
}
}
점수가 90보다 작습니다.
등급은 B입니다.
if-else if-else
문조건문이 여러 개인
if
문
처음 if
문의 조건식이 false
일 경우, else if
문을 이용하여 다른 조건식의 결과에 따라 실행 블록을 선택할 수 있다.
public class IfElseIfElseExample {
int score = 75;
if (score >= 90) {
System.out.println("점수가 90~100 입니다.");
System.out.println("등급은 A입니다.");
} else if (score >= 80) {
System.out.println("점수가 80~89 입니다.");
System.out.println("등급은 B입니다.");
} else if (score >= 70) {
System.out.println("점수가 70~79 입니다.");
System.out.println("등급은 C입니다.");
} else {
System.out.println("점수가 70 미만 입니다.");
System.out.println("등급은 D입니다.");
}
}
점수가 70~79 입니다.
등급은 C입니다.
if
문
if
문의 블록 내부에는 또 다른if
문을 사용할 수 있다. 이를 중첩if
문이라고 부른다.
if
문뿐만 아니라 switch
문, for
문, while
문, do-while
문은 서로 중첩시킬 수 있다.
public class IfNestedExample {
public static void main(String[] args) {
int score = (int)(Math.random()*20) + 81;
System.out.println("점수: " + score);
String grade;
if (score >= 90) {
if (score >= 95) {
grade = "A+";
} else {
grade = "A";
}
} else {
if (score >= 85) {
grade = "B+";
} else {
grade = "B";
}
}
System.out.println("학점: " + grade);
}
}
점수: 81
학점: B
switch
문
if
문과 마찬가지로 조건 제어문이다.
if
문처럼 조건식이true
인 경우에 블록 내부의 실행문을 실행하는 것이 아니라, 변수가 어떤 값을 갖느냐에 따라 실행문이 선택된다.
switch
문은 괄호 안의 값과 동일한 값을 갖는 case
로 가서 실행문을 실행시킨다.
만약 괄호 안의 값과 동일한 값을 갖는 case
가 없으면 default
로 가서 실행문을 실행시킨다. (default
는 생략 가능하다.)
public class SwitchExample {
public static void main(String[] args) {
int num = (int) (Math.random() * 6) + 1;
switch (num) {
case 1:
System.out.println("1번");
break;
case 2:
System.out.println("2번");
break;
case 3:
System.out.println("3번");
break;
case 4:
System.out.println("4번");
break;
case 5:
System.out.println("5번");
break;
default:
System.out.println("6번");
break;
}
}
}
6번
for
문, while
문, do-while
문) ]반복문은 어떤 작업(코드들)이 반복적으로 실행되도록 할 때 사용된다.
for
문
for
문은 주어진 횟수만큼 실행문을 반복 실행할 때 적합한 반복 제어문이다.
for
문이 처음 실행될 때 ①초기화식
이 제일 먼저 실행된다.조건식
을 평가해서 true
면 ③실행문
을 실행시키고,false
면 for
문 블록을 실행하지 않고 끝나게 된다.실행문
들이 모두 실행되면 ④증감식
을 실행시키고 다시 ②조건식
을 평가하게 된다.public class ForSumFrom1To100Example {
public static void main(String[] args) {
int sum = 0;
for(int i=1; i<=100; i++) {
sum += i;
}
System.out.println("1 ~ 100 합: " + sum);
}
}
1 ~ 100 합: 5050
while
문
while
문은 조건식이true
일 경우에 계속해서 반복한다.
조건식에는 비교 또는 논리 연산식이 주로 오는데, 조건식이false
가 되면 반복 행위를 멈추고while
문을 종료한다.
while
문이 처음 실행될 때 ①조건식
을 평가한다. 평가 결과가 true
이면 ②실행문
을 실행시킨다.실행문
이 모두 실행되면 다시 조건식으로 되돌아가서 ①조건식
을 다시 평가한다.true
면 ② → ①로 다시 진행하고,false
면 while
문을 종료한다.public class WhileSumFrom1To100Example {
public static void main(String[] args) {
int sum = 0;
int i = 0;
while(i <= 100) {
sum += i;
i++;
}
System.out.println("1 ~ " + (i - 1) + " 합: " + sum);
}
}
1 ~ 100 합: 5050
do-while
문
do-while
문은 조건식에 의해 반복 실행한다는 점은while
문과 동일하다.
시작할 때부터 조건식을 검사하여 블록 내부를 실행할지 결정하는while
문과는 달리,
do-while
문은 실행문을 우선 실행시키고 실행 결과에 따라서 반복 실행을 계속할지 결정한다.
do-while
문이 처음 실행될 때 ①실행문
을 우선 실행한다.실행문
이 모두 실행되면 ②조건식
을 평가한다.true
면 ① → ②와 같이 반복하여 실행한다.false
면 do-while
문을 종료한다.
do-while
문은while()
뒤에 반드시 세미콜론;
을 붙여야 한다.
continue
문루프 내에서 사용하여 해당 루프의 나머지 부분을 건너뛰고, 바로 다음 조건식의 판단으로 넘어가게 해주는 역할을 한다. 보통 반복문 내에서 특정 조건에 대한 예외 처리를 하고자 할 때 사용된다.
public class ContinueExample {
public static void main(String[] args) {
for (int i = 1; i <= 20; i++) {
if (i % 5 == 0) {
System.out.println(i);
} else {
continue;
}
}
}
}
5로 나누어 떨어지는 경우만 출력하고, 아닌 경우에는 건너뛴다.
5
10
15
20
break
문루프 내에서 사용하여 해당 반복문을 완전히 종료시킨 뒤, 반복문 바로 다음에 위치한 명령문을 실행한다. 루프 내에서 조건식의 판단 결과와 상관없이 반복문을 완전히 빠져나가고 싶을 때 사용한다.
public class BreakExample {
public static void main(String[] args) {
int i = 5, j = 10;
while (true) {
if (i >= j) {
break;
}
i++;
}
System.out.println(i);
}
}
while
의 조건이 True
로, 무한 루프이지만, i
가 j
보다 크거나 같을 때 break
를 수행하도록 하여서i
가 10
일 때 루프가 종료된다.
10
break with label
)반복문이 중첩되어 있을 때, 한 번에 모든 반복문을 빠져나가거나 특정 반복문까지만 빠져나가고 싶다면 반복문에 이름(
label
)을 설정하면 된다!
반복문 앞에 이름(라벨)을 붙이고, break 이름;
을 하면 된다.
public class BreakOutterExample {
public static void main(String[] args) {
Outter:
for (int i = 2; i < 10; i++) {
for (int j = 2; j < 10; j++) {
if (i == 5) {
break Outter;
}
System.out.println(i + " * " + j + " = " + (i * j));
}
}
}
}
break Outter;
를 통해, 가장 바깥쪽 반복문까지 종료시켰다.
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27
4 * 2 = 8
4 * 3 = 12
4 * 4 = 16
4 * 5 = 20
4 * 6 = 24
4 * 7 = 28
4 * 8 = 32
4 * 9 = 36
i
가 5
일 때 종료하였으므로, 4
단까지만 출력된다.