이전 글의 조건문과 다르게, 정말 기계 스러운 처리 방식도 존재한다. 기계의 발명은 사람이 하는 작업을 자동화 하고 반복되는 일을 대신하기 위해서 였다. 그 기능에 기반하여 나온 것이 바로 반복문이다.
단순히 정말 특정 코드를 반복해서 실행하는 간단한 코드이다. 예시로 for, while, do-while등이 존재하는데 이 3개의 대하여 알아보자
- for 문
- 특정 조건에 따라 연산을 반복해서 수행하고 싶을 때 사용하는 문맥입니다.
- for (초기값; 조건문; 증가연산) { (연산) } 형태로 사용합니다.
- 특정 조건은 초기값과 조건문을 통해서 정의합니다.
- 반복할 때마다 값을 증가시키려면 증가연산을 정의합니다.
- 초기값이 조건문을 만족할 때까지 (연산)을 수행하면서 회차마다 증가연산을 수행합니다.
// for 문
for(int i=0; i < 4; i++) { // 변수 i 값은 0 ~ 3 까지 반복
System.out.println(i + "번째 출력"); // i 변수와 문자열 합치기
}
// 출력
0번째 출력
1번째 출력
2번째 출력
3번째 출력
- 향상된 for 문
- for 소괄호 안에 값이 3개나 들어가기 때문에 이걸 2개로 줄여주는 방법이 향상된 for문 입니다.
- 향상된 for 문은 연속된 변수 목록을 출력할 때 쓰입니다.
- for (변수 타입 변수 명 : 목록변수) { (연산) } 형태로 사용합니다.
- 변수 타입 과 변수 명 은 for 문안에서 연산을 수행할 변수를 정의합니다.
- 목록변수는 3,6,9,12,15 처럼 값여러개를 하나의 변수로 저장하고 싶을 때 사용합니다.
// 향상된 for 문
int[] numbers = {3,6,9,12,15};
for(int number: numbers) {
System.out.print(number + " ");
}
// 출력
3 6 9 12 15`
향상된 for문의 경우 리스트에서 [ 3, 6, 9, 12, 15 ]를 저장함과 동시에 변수 5개가 정의 되어 있음으로 증가연산과 같은 추가적인 계산이 필요 없게 되었다. 실제로 이해가 안될 수 있으니 아래의 코드를 참고해 보자
더보기
더보기
// 만약 기존 for 문으로 구현한다면?
int[] numbers = {3,6,9,12,15};
for(int i = 0; i < numbers.length; i++) { // 배열에 .length 를 붙이면 길이값이 응답됩니다.
System.out.println(numbers[i]);
}
// 출력
3 6 9 12 15
- while 문, do-while 문
- for 문과 동일하게 특정 조건에 따라 연산을 반복해서 수행하고 싶을 때 사용하는 문맥입니다.
- 다만, 초기값 없이 조건문만 명시하여 반복합니다.
- while(조건문) { (연산) } 형태로 사용합니다. (while 문)
- 위처럼 while 문으로 사용하면 조건문을 만족해야지만 연산이 반복 수행됩니다.
- 한번 반복할 때마다 조건문을 체크해서 조건문이 불만족(false) 이면 반복을 중단합니다.
- do { (연산) } while(조건문) 형태로도 사용합니다. (do-while 문)
- 위처럼 do-while 문으로 사용하면 최초 1회 연산 수행 후 조건문을 체크하여 더 반복할지 결정합니다.
- 반복하게 된다면 그 이후에는 한번 반복할 때마다 조건문을 체크해서 조건문이 불만족(false) 이면 반복을 중단합니다.
- break 명령
- break; 명령을 호출하면 가장 가까운 블럭의 for 문 또는 while 문을 중단합니다. (또는 switch)
- 반복문 안에서 break; 형태로 사용합니다.
- continue 명령
- for 문 또는 while 문에서 해당 순서를 패스하고 싶을 때 continue 명령을 사용합니다.
- 반복문 안에서 continue; 형태로 사용합니다.
public class LoopExample {
public static void main(String[] args) {
int num = 1;
// while 문을 사용하여 1부터 10까지의 숫자 출력
while (num <= 10) {
if (num % 2 == 0) {
// 짝수일 경우 continue로 건너뜁니다. (아래의 println~num++까지 전부 스킵)
num++;
continue;
}
System.out.println("while loop, num = " + num);
if (num == 7) {
// num이 7일 때 반복 종료
break;
}
num++;
}
System.out.println("End of while loop");
// do-while 문을 사용하여 최소 1회 실행 후 조건 확인
int doNum = 10;
do {
System.out.println("do-while loop, doNum = " + doNum);
doNum--;
} while (doNum > 5);
System.out.println("End of do-while loop");
}
}
// 결과
// while loop, num = 1
// while loop, num = 3
// while loop, num = 5
// while loop, num = 7
// End of while loop
// do-while loop, doNum = 10
// do-while loop, doNum = 9
// do-while loop, doNum = 8
// do-while loop, doNum = 7
// do-while loop, doNum = 6
// End of do-while loop
이해를 돕기 위해 설명하면,
- while 루프 부분:
- num이 1일 때 출력한 후 num++를 통해 num이 2가 됩니다.
- num이 2일 때는 num++실행 후 (num=3) continue가 실행되어 건너뛰고 다음 반복으로 넘어갑니다.
- num이 3이되고 println을 만나 'num = 3'이 입력됩니다.
- 위의 3과정이 반복됩니다.
- 이 과정이 반복되어 num이 7일 때 break로 인해 while 루프가 종료됩니다.
- do-while 루프 부분:
- doNum이 10일 때 최초 출력하고, 이후 doNum--를 통해 9, 8, 7, 6으로 감소하면서 반복됩니다.
- doNum이 5보다 작아지면 조건에 따라 do-while 루프가 종료됩니다.
이를 실제로 응용하면 아래와 같이 돌아간다
// 선택적 구구단 생성기
Scanner sc = new Scanner(System.in);
int passNum = sc.nextInt(); // 출력제외할 구구단수 값
for (int i = 2; i <= 9; i++) {
if (i == passNum) {
continue;
}
for (int j = 2; j <= 9; j++) {
System.out.println(i + "곱하기" + j + "는" + (i * j) + "입니다.");
}
}
// 입력
2
// 출력 - 입력값인 2단은 건너띄고 구구단 출력
3곱하기2는6입니다.
3곱하기3는9입니다.
3곱하기4는12입니다.
... 중략 ...
9곱하기8는72입니다.
9곱하기9는81입니다.
'Back-End (Web) > JAVA' 카테고리의 다른 글
[JAVA] 참조형 자료구조 정리(LIST / STACK / QUEUE / SET / MAP) (0) | 2024.11.11 |
---|---|
[JAVA] 배열 (0) | 2024.11.11 |
[JAVA] 조건문 (0) | 2024.11.11 |
[JAVA] 연산자 (0) | 2024.11.11 |
[JAVA] 변수와 변수 종류 (0) | 2024.11.11 |