본문 바로가기
국비학원 전 강의 필사/점프 투 자바

#04-04 for 문 - <점프 투 자바>

by kkooHan 2022. 9. 1.

 

출처 : https://wikidocs.net/book/31

 

 

점프 투 자바

**초보 프로그래머를 위한 자바 입문서** 이 책은 문법위주의 지식보다는 이해중심의 지식을 전달하는 것을 주 목적으로 한다. 예를 들어 자바에서 잘 파악하기 힘든 개념 ...

wikidocs.net

 

 

 

 

 

 

필사 :

 

for문도 while문과 마찬가지로 문장을 반복해서 수행해야 할 경우에 사용한다.

 

1. for문의 구조

2. for문의 예제

3. for와 continue

4. 이중 for문

 

 

 

1. for문의 구조

for문은 예제를 통해서 알아보는 것이 가장 쉽다. 예제를 따라해 보도록 하자.

 

예 1) 전형적인 for문

 

String[] numbers = {"one", "two", "three"};

for (int i=0; i <numbers.length; i++) {

    System.out.println(numbers[i]);

}

 

출력 결과는 다음과 같다.

one

two

three

 

numbers 배열의 첫 번째 요소부터 마지막 요소까지 출력하는 예이다.

 

 

for문의 조건문은 세미콜론(;)을 구분자로 세 부분으로 나뉘어진다.

 

for (초기치; 조건문; 증가치) {

    ...

}

 

위 예에서 초기치는 int i = 0이 되고, 조건문은 i < numbers.length

그리고 증가치는 i++이 된다.

즉 i값이 numbers의 갯수보다 작은 동안

계속 i값을 1씩 증가시킨다는 의미이다.

 

while문과 비슷하지만 뭔가 컴팩트하게 잘 짜여진 느낌이 나는 것이

for문의 매력이라고 할 수 있다.

 

 

 

2. for문의 예제

for문의 쓰임새를 알기 위해서 다음을 가정해 보자.

 

"총 5명의 학생이 시험을 보았는데 시험점수가 60점이 넘으면 합격이고

 그렇지 않으면 불합격이다. 합격인지 불합격인지에 대한 결과를 보여준다."

 

 

우선 5명의 학생의 시험성적을 다음과 같이 표현했다.

int [] marks = {90, 25, 67, 45, 80};

 

1번 학생은 90점이고 5번 학생은 80점이다.

 

 

이런 점수를 차례로 검사하여 합격여부를 알려주는 프로그램을 만들어 보자.

 

int [] marks = {90, 25, 67, 45, 80};

for (int i = 0; i < marks.length; i++) {

    if (marks[i] >= 60) {

        System.out.println((i+1) + "번 학생은 합격입니다.");

    } else {

        System.out.println(i+1) + "번 학생은 불합격입니다.");

    }

}

 

i값이 1씩 증가하여 for문 안의 문장들이 수행된다.

따라서 marks[i]는 차례로 90, 25, 67, 45, 80의 값을 갖게 된다.

marks[i]가 60 이상이면 합격 메세지를 출력하고

60을 넘지 않으면 불합격 메시지를 출력한다.

i가 marks의 갯수인 5보다 크게되면 for문이 중지된다.

 

 

 

3. for와 continue

while문에서 알아보았던 continue가 for문에도 동일하게 적용된다.

즉, for문은 안의 문장을 수행하는 도중에 continue문을 만나면

for문의 처음으로 돌아간다.

 

 

위의 예제를 그대로 이용해서 60점 이상인 사람에게는 축하 메세지를 보내고

나머지 사람에게는 아무런 메세지도 전하지 않는 프로그램을 만들어 보자.

 

int [] marks = {90, 25, 67, 45, 80};

for(int i = 0; i < marks.length; i++) {

    if (marks[i] < 60) {

        continue;

    }

    System.out.println((i+1) + "번 학생 축하합니다. 합격입니다.");

}

 

점수가 60점 미만인 학생일 경우에는 marks[i] < 60이 참이 되어

continue문이 수행된다. 따라서 축하 메세지를 출력하는 부분을

수행하지 않고 for문의 첫부분으로 돌아가게 된다.

 

===

while문과  마찬가지로 for문 안에서 break 문장을 만나면

for문을 벗어난다.

===

 

 

 

4. 이중 for문

for문을 두 번 이용하면 아주 간단하게 구구단을 출력해 볼 수가 있다.

 

for(int i = 2; i < 10; i++) {

    for(int j = 1; j < 10; j++) {

        System.out.print(i*j+" ");

    }

    System.out.println("");

}

 

위의 예를 보면 for가 두 번 사용되었다.

먼저 2부터 9까지의 숫자가 차례로 i에 대입된다.

i가 처음 2일 때 다시 for문을 만나게 된다.

 

이제 1부터 9까지의 숫자가 j에 대입되고

그 다음 문장인 System.out.print(i*j + " ");를 수행한다.

 

따라서 i가 2일 때 2*, 2*2, 2*3, ... 2*9까지 차례로 수행되며

그 값을 출력하게 된다.

 

그 다음에는 i가 3일 때 역시 2일 때와 마찬가지로 수행될 것이고

i가 9일 때까지 계속 반복되게 된다.

 

 

위에서 System.out.printSystem.out.println을 구분하여 사용했다.

System.out.print줄바꿈문자(\n)을 포함하지 않고 출력을 하고

System.out.println마지막에 줄바꿈문자(\n)을 포함하여 출력하는 차이가 있다.

 

즉 2단, 3단처럼 한 단이 끝날 때만 줄바꿈 문자를 출력하기 위해

위와 같이 구분하여 사용한 것이다.

 

 

 

 

 

요약 : 

 

1. for문의 구조
for(초기치; 조건문; 증가치){
...
}

 

구분자 : 세미콜론(;)

 

 

 

2. for문의 예제
int [] marks = {90, 25, 67, 45, 80};

for (int i = 0; i < marks.length; i++) {
    if (marks[i] >= 60) {
        System.out.println((i+1) + "번 학생은 합격입니다.");
    } else {
        System.out.println(i+1) + "번 학생은 불합격입니다.");
    }
}

 

 

3. for와 continue
int [] marks = {90, 25, 67, 45, 80};

for(int i = 0; i < marks.length; i++) {
    if (marks[i] < 60) {
        continue;
    }
    System.out.println((i+1) + "번 학생 축하합니다. 합격입니다.");
}

 

 

 

4. 이중 for문

for(int i = 2; i < 10; i++) {

    for(int j = 1; j < 10; j++) {

        System.out.print(i * j + " ");

    }
    System.out.println("");
}

 

 

 

 

 

느낀점 : 

 

i++
-> while문에서와 다르게 세미콜론(;) 안쓰임

 


marks[i], 

(i+1) + "번 학생"

 


for와 continue
해당되지 않는 것에 continue 활용.

 


print(" ")
println("")

 


와 ln이 줄바꿈문자\n이었구나...

 

 

댓글