for 문도 while 문과 마찬가지로 문장을 반복해서 수행해야 할 경우에 사용한다.
for 문의 구조
전형적인 for문
// numbers 배열의 첫번째 요소부터 마지막 요소까지 출력하는 예이다.
String[] numbers = {"one", "two", "three"};
for(int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
출력 결과
one
two
three
for 문의 조건문은 세미콜론(;)을 구분자로 세 부분으로 나뉘어진다.
for (초기치; 조건문; 증가치) {
...
}
위 예에서 초기치는 int i = 0이 되고 조건문은 i < numbers.length 그리고 증가치는 i++ 이 된다. 즉 i값이 numbers의 갯수보다 작은 동안 계속 i값을 1씩 증가시킨다는 의미이다.
for 문의 예제
“총 5명의 학생이 시험을 보았는데 시험점수가 60점이 넘으면 합격이고 그렇지 않으면 불합격이다. 합격인지 불합격인지에 대한 결과를 보여준다.”
우선 5명의 학생의 시험성적을 다음과 같이 표현한다.
int[] marks = {70, 77, 45, 55, 91};
1번 학생은 70점이고 5번 학생은 91점이다.
이런 점수를 차례로 검사하여 합격여부를 알려주는 프로그램을 만든다.
int[] marks = {70, 77, 45, 55, 91};
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문이 중지된다.
for와 continue
while 문의 continue가 for 문에도 동일하게 적용된다. 즉, for문 안의 문장을 수행하는 도중에 continue문을 만나면 for 문의 처음으로 돌아간다.
위의 예제를 그대로 이용해서 60점 이상인 사람에게는 축하 메시지를 보내고 나머지 사람에게는 아무런 메시지도 전하지 않는 프로그램을 만들어 본다.
int[] marks = {70, 77, 45, 55, 91};
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문을 벗어난다.
이중 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*1, 2*2, 2*3, , , ,2*9 까지 차례로 수행되며 그 값을 출력하게 된다. 그 다음에는 i가 3일 때 역시 2일 때와 마찬가지로 수행될 것이고 i가 9일 때까지 계속 반복되게 된다.
위에서 System.out.print와 System.out.println을 구분하여 사용했다. System.out.print은 줄바꿈문자(\n)을 포함하지 않고 출력을 하고 System.out.println은 마지막에 줄바꿈문자(\n)을 포함하여 출력하는 차이가 있다. 즉 2단, 3단 처럼 한 단이 끝날때만 줄바꿈 문자를 출력하기 위해 위와 같이 구분하여 사용한 것이다.
'Language > Java' 카테고리의 다른 글
[Java] 객체지향 프로그래밍이란? (0) | 2022.08.01 |
---|---|
[Java] for each 문 (0) | 2022.08.01 |
[Java] while 문 (0) | 2022.08.01 |
[Java] switch/case 문 (0) | 2022.08.01 |
[Java] if 문 (0) | 2022.08.01 |