반복문
프로그램 수행 흐름을 바꾸는 역할을 하는 제어문 중 하나로, 특정 문장 반복하여 수행하게 함
for 문
for (초기식; 조건식; 증감식) { 수행될 문장 ; }
for (int i = 1; i <= 10; i++ ) {
System.out.println( i + " 출력");
}
i는 1부터 시작하여 1씩 증가하면서 10과 같거나 10보다 작을때까지 i 출력 반복 실행
1회전: 초기식 확인 후 조건식 확인 → 조건식이 true면 문장 수행, 조건식이 false면 수행 X
2회전: 증감식 연산 후 조건식 확인 → 조건식이 true면 문장 수행, 조건식이 false면 수행 X
조건식이 false가 나올 때까지 문장 수행
※ int가 아닌 char를 입력하면?
for (char ch = 'a'; ch <= 'e'; ch++) {
System.out.println(ch);
}
결과
a
b
c
d
e
while 문
while (조건식) { 수행될 문장; [ 증감식 or 분기문]; }
int i = 1;
while (i <= 10) {
System.out.println( i + "출력");
i ++;
}
조건식이 true일 때, 문장 수행
문장 수행이 끝나면 조건식 다시 확인 후 true면 수행
조건식이 false가 될 때까지 수행, false가 되면 종료
* 이전에 초기식 선언. { }안에 조건을 벗어나게 할 연산(증감식, 분기문) 필요.
※ 무한루프 : 조건 값을 항상 true로
int k = 0;
while (true) {
System.out.println(k++ + "번째 k 출력");
}
do ~ while
do { 수행될 문장; [ 증감식 or 분기문 ]; } while (조건식);
do 안의 내용을 먼저 실행한 후 (무조건 한 번 이상 수행) - while과의 차이점
조건식 확인 후 true면 문장 수행, false면 종료
{}안에 조건을 벗어나게 할 연산(증감식, 분기문) 필요
※ do-while문 무한루프
int k = 0;
do {
System.out.println(k++ + "번째 k 출력");
} while (true);
중첩 반복문
for (초기값1; 조건식1; 증감식1) {
수행될 문장1;
for(초기값2; 조건식2; 증감식2) {
수행될 문장2;
}
수행될 문장3;
}
for문 진입시 수행문1 수행
두 번째 for문에 진입해 조건식2가 false가 될 때까지 수행문2 수행 후
나오면 수행문3을 수행하고
조건식 1로 돌아와 true면 다시 반복
즉, 외부 for문 10번 반복, 내부 for문 10번 반복하게 하면 수행문2는 100번 반복하게 됨!
public void testGugudan() {
// 중첩 반복문 구구단
// for문
for (int i = 2; i < 10; i++) {
System.out.println("==== " + i + "단 ====");
for (int j = 1; j < 10; j++) {
System.out.println(i + " X " + j + " = " + i * j);
}
}
// while문
int i = 2;
while(i<10) {
System.out.println("==== " + i + "단 ====");
int j =1;
while(j<10) {
System.out.println(i + " X " + j + " = " + i * j);
j++;
}
i++;
}
}
결과
==== 2단 ====
2 X 1 = 2
2 X 2 = 4
2 X 3 = 6
2 X 4 = 8
2 X 5 = 10
…
==== 9단 ====
9 X 1 = 9
9 X 2 = 18
9 X 3 = 27
9 X 4 = 36
9 X 5 = 45
9 X 6 = 54
9 X 7 = 63
9 X 8 = 72
9 X 9 = 81
※ 피라미드와 마름모 별로 출력하기
public class RepetitivePractice {
public void method1() {
// 피라미드 모양 별 찍기
// 외부 for문 줄 조건
for (int i = 0; i < 4; i++) {
// 내부 for문 칸 조건
// 공백 출력(3,2,1,0)
for (int j = 3; j > i; j--) {
System.out.print(" ");
}
// 별 출력(1,3,5,7)
for (int j = 0; j < i * 2 + 1; j++) {
System.out.print("*");
}
// 개행
System.out.println();
}
}
결과
public void method2() {
// 마름모 모양 별 찍기
System.out.println("홀수 입력: ");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
// num이 7이라면?
// 상단부(피라미드) 0~2행
for (int i = 0; i < num / 2; i++) {
// 공백 출력(3,2,1)
for (int j = num / 2; j > i; j--) {
System.out.print(" ");
}
// 별 출력(1,3,5)
for (int j = 0; j < i * 2 + 1; j++) {
System.out.print("*");
}
// 개행
System.out.println();
}
// 하단부(역피라미드) 3~6행
for (int i = num / 2; i >= 0; i--) {
// 공백 출력(0,1,2,3)
for (int j = num / 2; j > i; j--) {
System.out.print(" ");
}
// 별 출력(7,5,3,1)
for (int j = 0; j < i * 2 + 1; j++) {
System.out.print("*");
}
// 개행
System.out.println();
}
}
결과
분기문
break
반복문에서는 break문 자신이 포함된 가장 가까운 반복문을 빠져나감
countinue
반복문 내에서만 사용 가능, countinue 아래 부분은 실행하지 않고 반복문을 다시 실행
for문은 증감식으로 이동, while(do~while)문은 조건식으로 이동
전체 반복 중에 특정 조건을 만족하는 경우를 제외하고자 할 때 유용함
ex) for문 내에 if문을 사용해 if에 해당하면 countinue 아래를 수행
'TIL > JAVA' 카테고리의 다른 글
| [Java] 람다식(Lambda Expressions) - 1. 람다식이란, 람다식 기본 작성법 (0) | 2023.08.11 |
|---|---|
| 객체 지향 프로그래밍 - 클래스와 객체 (0) | 2022.07.20 |
| Java 기초 - 조건문 (0) | 2022.06.20 |
| Java 기초 - 연산자(Operator) (0) | 2022.06.18 |
| Java 기초 - 상수, 오버플로우, 형변환 (0) | 2022.06.15 |

