반복문
반복문은 똑같은 로직이 반복적으로 수행될 때 사용되며 기본적인 종류에는 for문, while문 이 존재 하는데 for문에서는 기본 for 문, 향상된 for문 2종류가 존재하고 while 문에는 while문과 do-while문이 존재한다.
반복문 또한 조건문과 유사하게 조건식과 수행할 코드블럭{} 으로 구성되어지고 반복회수가 중요한 경우에 for문을 그 외에는 while문을 사용한다. for문과 while문은 서로바꿔 쓸 수 있지만 for문은 주로 반복횟수를 알고 있을 때 사용한다. do-while문은 while문의 변형으로 블럭{}안의 코드가 최소한 한번은 수행될 것이 보장된다.
for문
for문은 초기화, 조건식, 증감식, 그리고 수행할 코드블럭{}으로 구성 되는데 for문 안에 또 다른 for문을 포함시킬 수도 있다. for문의 중첩횟수에는 거의 제한이 없으며 조건식이 참인 동안 블럭 { }내의 문장들을 반복하다가 조건식이 거짓이 되면 반복문을 벗어나게 된다.
// 조건식이 참True일 때 수행될 코드
}
먼저 초기화가 수행되고 그 이후에는 조건식이 참인 동안 조건식 → {} 안 코드 → 증감식 의 순서로 계속 반복되다가 조건식이 거짓이 되면 for문 전체를 빠져나가게 된다.
초기화
반복문 안에서 사용될 변수를 초기화 하는 부분이고 for문이 시작될 때 처음 한번만 실행된다. 둘 이상의 변수가 필요할 때는 콤마를 이용하요 변수를 초기화 하면 되지만 변수들의 타입은 같아야 한다.
조건식
조건식이 참이면 반복을 계속하고 거짓이면 반복을 중단하고 for문 전체를 벗어난다.
증감식
반복문 안에 쓰이는 변수의 값을 증가 또는 감소시키는 식이며 매 반복마다 변수의 값이 증감식에 의해 변해가다가 조건식이 거짓이 되게하여 for문을 빠져나가게 만든다. 아래에는 증감식에 쓰이는 다양한 연산자들이다.
i-- // 1씩 감소
i+=n // n씩 증가
i*=n // n배씩 증가
예제
-
Code
TimesTable.javapublic class TimesTable { public void timesTable() { for(int i=2; i<=9; i++) { for(int j=1; j<=9; j++) { System.out.printf("%d X %d = %d%n", i, j, i*j); } } } -
Code
TimesTableMain.javapublic class TimesTableMain { public static void main(String[] args) { TimesTable tt =new TimesTable(); tt.timesTable(); } } -
Result
...
향상된 for문
JDK 1.5 버전부터 for문의 새로운 문법이 추가 되었다.
// 반복될 문장
}
향상된 for문을 사용하면 지정된 배열이나 컬렉션에 저장된 값이 매 반복마다 하나씩 순서대로 읽혀서 변수에 저장된다.
while문
while문은 조건식과 코드블럭만으로 이루어진 반복문으로 조건식이 참인 동안 블럭내의 문장을 계속 수행하고 조건식이 거짓이 되면 while문을 빠져나온다
// 반복될 문장
}
조건식이 참이면 while 블럭 안의 코드를 순차적으로 수행하고 거짓이면 while문을 완전 벗어난다. 만약 블럭의 문장이 수행 되었다면 다시 조건식으로 돌아가 참/거짓을 판단하여 앞선 작업들을 계속 반복하게 된다.
while문의 조건식은 생략이 불가능 하므로 조건식이 항상 참이 되게 하고 싶으면 조건식 자리에 true를 넣으면 되고 true를 넣으면 조건식이 항상 참이기 때문에 블럭 내의 문장을 무한히 반복하게 된다.
별 패턴 찍기 예제
직각삼각형 모양 별 패턴 찍기
-
Code
RightTriangleStarPattern.javapublic class RightTriangleStarPattern { public static void main(String[] args) { for (int i = 0; i <= 10; i++) { for (int j = 0; j < i; j++) { System.out.print("*"); } System.out.println(); } } } -
Result
다이아몬드 모양 별 패턴 찍기
-
Code
DiamondStarPattern.javapublic class DiamondStarPattern { public static void main(String[] args) { for (int i = 0; i < 5; i++) { for (int j = i; j < 5; j++) { System.out.print(" "); } for (int j = 0; j < i; j++) { System.out.print("*"); } for (int j = 0; j < i - 1; j++) { System.out.print("*"); } System.out.println(); } for (int i = 0; i < 5; i++) { for (int j = 0; j < i; j++) { System.out.print(" "); } for (int j = i; j < 5; j++) { System.out.print("*"); } for (int j = i + 1; j < 5; j++) { System.out.print("*"); } System.out.println(); } } } -
Result
역삼각형 모양 별 패턴 찍기
-
Code
InvertedTriangleStarPattern.javapublic class InvertedTriangleStarPattern { public static void main(String[] args) { int i, j; i = 1; while (i < 10) { j = 1; while (j < i) { System.out.print(" "); j++; } j = 1; while (j <= (10 - i) * 2 - 1) { System.out.print("*"); j++; } i++; System.out.println(); } } } -
Result