티스토리 뷰

Java

[JAVA] 제어문(for,while)

TreeBomb 2023. 11. 28. 17:24

반복문이란?

반복문은 말 그대로 특정 부분을 반복해 주는 문법이다.

종류는 for문 while문 두 가지고 상황에 맞는 문법을 골라서 쓰면 된다.

 

for문

for문은 초기식, 조건식, 증감식 3가지가 필요하다.

- 초기식 : 반복을 하기 위한 시작값으로 변수를 하나 초기화 한다. 변수명은 보통 i를 쓴다.

- 조건식 : 반복을 하기 위한 종료값으로 비교연산자를 많이 사용한다.

- 증감식 : 변수의 값을 증감시켜주는 역할을 한다. 증감 연산자를 많이 사용한다.

 

for문의 형태

for(초기식; 조건식; 증감식) {

    조건식이 참일 때 실행할 명령

}

코드

for(int i = 0; i < 3; i++) {
    System.out.println(i);
}

결과

0
1
2

i가 1씩 증가하면서 출력이 되는것을 확인할 수 있다.

여기서 주의해야할 점은 조건식의 i < 3이다. 3보다 작을 때 까지여서 3이 되는 순간 for문 안에 있는 코드를 실행시키지 않고 for문을 바로 빠져나온다.

 

그리고 for문도 다른 문법들과 똑같이 for문 안에 들어갈 코드가 1줄이면 { } (대괄호)를 생략을 할 수 있다.

 

다중 for문

for문은 다중으로 겹쳐서 쓸 수 있다.

이것을 대중 for문 이라고 한다. for문 안에 for문이 있는 것이다.

코드

for (int i = 0; i < 3; i++) {
    for (int j = 1; j <= 4; j++) {
        System.out.print(j + " ");
    }
    System.out.println();
}

결과

1 2 3 4
1 2 3 4
1 2 3 4

제일 밖에 있는 for문이 3번 반복하는 반복문이고 안에 있는 for문은 1~4까지 출력을 하는 for문이다.

결과로 확인되겠지만 1~4까지 3번 출력이 된 것을 확인할 수 있다.

 

다중 for문을 배우면 가장 많이 하는 별 찍기 예제를 살펴보자.

*

* *

* * *

* * * *

* * * * *

위와 같이 출력이 되게 코드를 짜보자.

우선 총 5줄을 출력해야 하니 가장 밖에 있는 for문을 5번 반복하게 하고.

안에 있는 for문은 순차적으로 별을 하나씩 더 찍으면 된다.

코드

for (int i = 0; i < 5; i++)  {
    for (int j = 0; j <= i; j++) {
        System.out.printf("%c ", '*');
    }
    System.out.println();
}

결과

*
* *
* * *
* * * *
* * * * *

 

결과가 잘 나온 것을 확인할 수 있다.

 

향상된 for문

아직은 안 배운 부분이 있으니 간단히 구조만 확인해 보자.

향상된 for문은 JDK 1.5부터 새롭게 추가된 기능으로 배열과 컬렉션의 모든 요소를 참조하기 위한 반복문이다.

배열이란 하나의 변수가 여러 개의 값을 가진수 있다고 생각하면 이해하기 쉬울 것이다.

향상된 for문의 형태

for(변수 : 배열 or 컬렉션) {

   실행할 명령

}

 

배열 안에 있는 정수의 총합과 평균을 구하는 코드를 살펴보자.

 

코드

int[] score = {90,92,93};
int sum = 0;
double avg = 0.0;
for(int i : score) {
    System.out.println(i);
    sum += i;
}
avg = (double)sum/score.length;
System.out.println("총점 :" + sum);
System.out.println("평균 : " + avg);

이해하기 쉽게 for문 안에 출력문을 하나 두었다.

결과

90
92
93
총점 :275
평균 : 91.66666666666667

score라는 이름을 가진 것이 배열이고 그 안에 있는 값들이 출력이 된 것을 보면

안에 있는 값들은 i라는 변수에 들어간다는 것을 확인할 수 있다.

 

 

이제 while문을 살펴보자.

while문

while문은 간편한 구성을 가진 반복문이다.

간편하지만 잘못 사용하면 무한 루프에 빠지기가 쉽다.

무한 루프란 반복문이 안 끝나는 상황을 의미한다.

 

while문의 형태

while(조건식) {

    조건식이 참일 때 사용할 명령

}

1부터 10까지 출력하는 코드

while(num <= 10) {
    System.out.println(num);
    num++;
}

결과

1
2
3
4
5
6
7
8
9
10

num이 10보다 작거나 같을 때까지 실행을 하는 while문이다.

for문과 비교하면 엄청 간단하다.

 

do-while문

do-while문은 반복문의 조건에 맞지 않아도 무조건 한 번은 실행을 하는 문법이다.

제어문중에 유일하게 세미콜론이 붙는다.

 

do-while문의 형태

do { 

    실행할 명령

} while(조건식);

코드

 int i = 11;
do {
	System.out.println(i);
}while(i <= 10);

결과

11

i의 값이 11이고 조건은 i 가 10보다 작거나 같을 때이다.

조건을 만족시키지 못하는 코드이지만 11이 출려되는 것을 확인하면서

조건을 만족 시키지 못해도 한 번은 무조건 실행이 되는 것을 확인할 수 있다.

 

반복문의 선택 방법

모든 반복문을 살펴보았다. 이젠 어떤 상황에 어떤 반복문을 써야 하는지 간단하게 살펴보자.

 

for문

- 반복 횟수가 지정이 돼있는 경우 > 횟수를 만족할 때까지 반복

  EX) 물병을 10번 채워라

while문

- 특정 조건이 부여되는 경우 > 조건이 만족할 때까지 반복

  EX) 물통에 물이 가득 찰 때까지 채워라

do-while문

- 특정 조건과 옵션이 부여되는 경우 > 한 번 실행 후 반복 여부 판단

  EX) 물통에 물을 따라보고 새지 않으면 끝까지 채워라

 

'Java' 카테고리의 다른 글

[JAVA] 배열(Array)  (2) 2023.11.30
[JAVA]기타제어문(break,continue)  (2) 2023.11.30
[JAVA] 제어문(if, switch)  (0) 2023.10.24
[JAVA] 연산자  (2) 2023.10.16
[JAVA] 형 변환  (0) 2023.10.09