반복문
for문
for문
반복문은 어떤 작업이 반복적으로 수행되도록 할 때 사용되며, 반복문의 종류로는 for문과 while문, 그리고 while문의 변형인 do-while문이 있다.
for문과 while문은 구조와 기능이 유사하여 어느 경우에나 서로 변환이 가능하며, 반복 횟수를 알고 있을 때는 for문을, 그렇지 않을 때에는 while문을 사용한다.
예제를 통해 살펴보자.
for(int i=1;i<=7;i++){
System.out.println("taking an extra step.");
}
"taking an extra step." 이라는 문장이 7번 출력되게 작성했다.
변수 i에 1을 저장한 후, 매 반복마다 i의 값을 1씩 증가시킨다. 그러다가 i의 값이 7를 넘으면 조건식 'i<7'가 거짓이 되어 반복을 마치게 된다. i의 값이 1부터 7까지 증가하니까 모두 7번 반복한다.
for문의 구조와 수행순서
for문은 크게 초기화, 조건식, 증감식, 블럭{ }으로 이루어져 있다.
조건식이 참인 동안 블럭{ }내의 문장들을 반복하다가 거짓이 되면 반복문을 벗어난다.
for(초기화;조건식;증감식){
... //조건식이 참(true)인 동안 수행될 문장들
}
수행 순서를 살펴보면,
초기화 → 조건식 → 수행될 문장 → 증감식 의 순서로 반복된다.
그러다가 조건식이 거짓이 되면 for문을 벗어난다.
예제
public class ForEx1 {
public static void main(String args[]) {
for(int i=1;i<=7;i++){ //괄호{}안의 문장을 7번 반복
System.out.println("taking an extra step.");
}
}
}
초기화
반복문에서 사용될 변수를 초기화하는 부분이며 처음에 한 번만 수행된다.
for(int i=1;i<=117;i++{ //변수i의 값을 1로 초기화
...
}
보통 변수 하나로 for문을 제어하지만, 둘 이상의 변수가 필요할 때는 아래와 같이 콤마','를 구분자로 변수를 초기화 하면 된다. (단, 두 변수의 타입은 같아야 한다.)
for(int i=1,j=0;i<=117;i++){ //int타입의 변수 i와 j를 선언하고 초기화
...
}
조건식
조건식의 값이 참(true)이면 반복을 계속, 거짓(false)이면 반복을 끝내고 for문을 벗어난다.
for(int i=1;i<=117;i++{ //'i<=117'가 참(true)인 동안 블럭{}안의 문장들을 반복
...
}
증감식
반복문을 제어하는 변수의 값을 증가 또는 감소시키는 식이다. 매 반복마다 변수의 값이 증감식에 의해 변하다가 조건식이 거짓(false)이 되어 for문을 벗어난다.
'++' 이외의 연산자들
for(int i=117;i>=1;i--){ // 117부터 1까지 1씩 감소
...
}
for(int i=1;i<=117;i+=2){ // 1부터 117까지 2씩 증가
...
}
for(int i=1;i<=117;i*=3){ // 1부터 117까지 3배씩 증가
...
}
증감식도 콤마','를 이용해서 두 문장 이상을 하나로 연결해서 사용할 수 있다.
for(int i=1, j=10;i<=117;i++, j--){
...
}
// i는 1부터 117까지 1씩 증가
// j는 10부터 1까지 1씩 감소
지금까지 살펴본 초기화, 조건식, 증감식 이 세 가지 요소들은 필요하지 않으면 생략할 수 있으며, 모두 생략도 가능.
for(;;){ // 초기화, 조건식, 증감식 모두 생략, 조건식은 참(true)
...
}
for문 예제
ForEx2
public class ForEx2 {
public static void main(String args[]) {
for(int i=1; i<=7; i++)
System.out.println(i); // i의 값을 출력
for(int i=1; i<=7; i++)
System.out.print(i); // print()를 쓰면 가로로 출력
}
}
Tip. 반복하는 문장이 하나일 때는 괄호{ }를 생략할 수 있다.
ForEx3
총 5명의 학생이 시험을 보는데 점수가 60점이 넘으면 합격 그렇지 않으면 불합격이다.
public class ForEx3 {
public static void main(String args[]) {
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)+"번 학생은 불합격입니다.");
}
}
}
}
Reference
2. 남궁성님의 Java의 정석 기초편 - CHAPTER4 13. for문
'JAVA' 카테고리의 다른 글
[JAVA] Exception in thread "main" java.lang.StringIndexOutOfBoundsException (6) | 2022.03.12 |
---|---|
[JAVA] Exception in thread "main" java.lang.ArithmeticException: / by zero (2) | 2022.03.09 |
JAVA - 배열 (Array) (2) | 2022.01.31 |
JAVA - 스캐너 클래스 (Scanner Class) (0) | 2022.01.26 |
JAVA - 객체 지향 프로그래밍 (OOP) (16) | 2022.01.12 |