제어문
자바 프로그램이 원하는 결과를 얻기 위해서 프로그램의 순차적인 흐름을 제어해야 하는 경우가 생깁니다. 이때 사용하면 명령문을 제어문이라고 하며, 이러한 제어문에는 조건문, 반복문 등이 있습니다.
조건문
조건문은 주어진 조건식의 결과에 따라 별도의 명령을 수행하도록 제어하는 명령문입니다. 분기점, 버튼식 수행, 양자택일, 선택지 등에 쓰입니다.
조건문의 종류
- if 문
- if / else 문
- if / else if / else 문
- switch 문
if 문
if 문은 조건식의 결과가 참(true)이면 주어진 명령문을 실행하며, 거짓(false)이면 아무것도 실행하지 않습니다.
if (조건식) {
// 조건식의 결과가 참일 때 실행되는 수행문
}
int a = 9;
if (a % 2 == 0) {
System.out.println("짝수입니다.");
}
if (a % 2 != 0) {
System.out.println("홀수입니다.");
}
// a값과 무관하게 연산자를 5번 사용
if / else 문
if 문과 함께 사용하는 else 문은 if 문과 반대로 주어진 조건식의 결과가 거짓(false)이면 주어진 명령문을 실행합니다.
if (조건식) {
// 조건식의 결과가 참일 때 실행되는 수행문
} else {
// 조건식의 결과가 거짓일 때 실행되는 수행문
}
int a = 9;
if (a % 2 == 0) {
System.out.println("짝수입니다.");
} else {
System.out.println("홀수입니다.");
}
// a값과 무관하게 연산자를 3번 사용
if / else if / else 문
두 개 이상의 if / else 문이 연달아 나온 것으로 조건식을 여러 개 명시할 수 있습니다. if / else if / else 문은 중첩된 if 문을 좀 더 간결하게 표현할 수 있습니다.
if (조건식1) {
// 조건식1의 결과가 참일 때 실행되는 수행문
} else if (조건식2) {
// 조건식2의 결과가 참일 때 실행되는 수행문
} else {
// 조건식1, 2의 결과가 거짓일 때 실행되는 수행문
}
int a = 100;
if (a % 10 == 0) { // 만약 a가 10의 배수라면,
System.out.println("10의 배수입니다!");
} else if (a % 2 == 0) { // 위의 조건식이 참이 아니면,
System.out.println("짝수입니다.");
// else if 문은 여러개 추가 가능
} else { // 위의 조건식이 모두 참이 아니면,
System.out.println("홀수입니다.");
}
switch 문
switch 문은 if / else 문과 마찬가지로 주어진 조건 값의 결과에 따라 다른 명령을 수행할 수 있는 조건문입니다.
switch (조건값) {
case 값1 :
// 조건값이 값1일 때 실행되는 수행문
break;
case 값2 :
// 조건값이 값2일 때 실행되는 수행문
break;
....
default :
// 조건값이 어떠한 case 절에도 해당하지 않을 때 실행되는 수행문
break;
}
반복문
반복문이란 프로그램 내에서 똑같은 명령을 일정 횟수만큼 반복하여 수행하도록 제어하는 명령문입니다. 수행이 반복처리될 때, N번, N회, A부터 B까지의 범위, 무한하게 수행 등에 쓰입니다.
반복문의 종류
- while 문
- do / while 문
- for 문
- Enhanced for 문(향상된 for 문)
while 문
while 문은 특정 조건을 만족할 때까지 계속해서 주어진 명령문을 반복 실행합니다.
while (조건식) {
// 수행문
}
do / while 문
do / while 문은 먼저 루프를 한 번 실행한 후에 조건식을 검사합니다. 즉, 조건식의 결과에 상관없이 무조건 한 번은 루프를 실행합니다.
do {
// 수행문
} while (조건식);
for 문
for 문은 초기식, 조건식, 증감식을 모두 포함하고 있는 반복문입니다. while 문보다는 좀 더 간결하게 반복문을 표현할 수 있습니다.
for (초기식; 조건식; 증감식;) {
// 수행문
}
Enhanced for 문(향상된 for 문)
JDK 1.5부터 추가된 반복문으로 컬렉션 프레임워크와 배열에서 유용하게 자주 사용됩니다.
for (자료형 변수명 : 배열명) {
// 수행문
}
실습
구구단
package class05;
public class Test01 {
public static void main(String[] args) {
int res;
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
res = i * j;
System.out.println(i + " X " + j + " = " + res);
}
}
}
}
실행결과
별찍기
package class06;
public class Test01 {
public static void main(String[] args) {
// 1.
// *****
// ****
// ***
// **
// *
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (i > j) {
System.out.print(" ");
} else {
System.out.print("*");
}
}
System.out.println();
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < i; j++) {
System.out.print(" ");
}
for (int j = 0; j < 5 - i; j++) {
System.out.print("*");
}
System.out.println();
}
// ---------------------------------
// 2.
// *****
// ****
// ***
// **
// *
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (i > j) {
System.out.print(" ");
} else {
System.out.print("*");
}
}
System.out.println();
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5 - i; j++) {
System.out.print("*");
}
for (int j = 0; j < i; j++ ) {
System.out.print(" ");
}
System.out.println();
}
// ---------------------------------
// 3.
// *
// **
// ***
// ****
// *****
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (4 - i > J) {
System.out.print(" ");
} else {
System.out.print("*");
}
}
System.out.println();
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5 - i; j++) {
System.out.print("*");
}
for (int j = 0; j < i + 1; j++) {
System.out.print(" ");
}
System.out.println();
}
// ---------------------------------
// 4.
// *
// ***
// *****
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
if (2 - i > j || 2 + i < j) {
System.out.print(" ");
} else {
System.out.print("*");
}
}
System.out.println();
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 2 - i; j++) {
System.out.print(" ");
}
for (int k = 0; k < 2 * i + 1; k++) {
System.out.print("*");
}
System.out.println();
}
}
}
GitHub
https://github.com/Qkrwnsgus0522/Java