JAVA
자바 기초 : 반복문 (for문, while문, do-while문)
버피코
2023. 2. 22. 09:29
핵심내용
- 반복문 : 제어문 블록이 실행 완료되었을 때 제어문 처음으로 돌아와 조건이 만족되는 동안 실행문을 반복해서 수행함. 이를 루핑(looping)이라고 한다. for문과 while문은 서로 변환이 가능하기에 어느쪽을 써도 무방하지만 주로 사용하는 경우가 다르다.
- for문 : 주어진 횟수만큰 실행문을 반복할 때 주로 사용한다. 조건식이 true일때 중괄호 내부를 반복하며 반복할때마다 증감식이 실행된다.
public static void main(String[] args) {
for(int i=1; i<=10; i++) { System.out.println(i); } } 실행결과 : 1
2 3 4 5 6 7 8 9 10 |
public static void main(String[] args) {
//1부터 100까지의 합 출력 //for문이 시작하기 전에 합계 변수 sum을 선언. -> for문을 끝내고 sum을 사용하기위해서. int sum = 0; for(int i=1; i<=100; i++) { sum += i; }//루프 카운터 변수는 for문을 벗어나서 사용할 수 없음. System.out.println("1~100까지 합 : " + sum); } 실행결과 : 1~100까지 합 : 5050 |
public static void main(String[] args) {
/*루프 카운터 변수로 float타입은 사용할 수 없음. 0.1은 float타입으로 정확하게 표현할 수 없기 때문. 따라서 루프카운터 변수는 정수로 선언하여 사용하는 것이 좋다.*/ for(float x=0.1f; x<=1.0f; x+=0.1f) { System.out.println(x); } } 실행결과 : 0.1
0.2 0.3 0.4 0.5 0.6 0.70000005 0.8000001 0.9000001 /*원래라면 이 for문을 10번을 반복해야하지만,
실제로 변수 x에 더해지는 값이 0.1보다 약간 크기 때문에 루프가 9번만 실행됨.*/ |
- 중첩for문 : for문 안에 for문이 있는것. 아래 처럼 구구단 출력 가능
public static void main(String[] args) {
for(int m=2; m<=9; m++) { System.out.println("*** " + m + "단 ***"); for(int n=1; n<=9; n++) { System.out.println(m + " x " + n + " = " + (m*n)); } } } 실행결과 : *** 2단 ***
2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 2 x 4 = 8 2 x 5 = 10 2 x 6 = 12 2 x 7 = 14 2 x 8 = 16 2 x 9 = 18 . . . *** 9단 *** 9 x 1 = 9 9 x 2 = 18 9 x 3 = 27 9 x 4 = 36 9 x 5 = 45 9 x 6 = 54 9 x 7 = 63 9 x 8 = 72 9 x 9 = 81 |
- while문 : 조건에 따라 반복할 때 주로 사용한다.조건식이 true일때 중괄호 내부를 계속 반복하며 조건식에는 주로 비교연산식이나 논리연산식이 온다.
public static void main(String[] args) { int i = 1; while(i<=10) { System.out.println(i); i++; } } 실행결과 : 1
2 3 4 5 6 7 8 9 10 |
public class Ex06_WhileSum1To100 {
public static void main(String[] args) { int sum = 0; int i = 1; while(i<=100){ sum = sum + i; i++; } System.out.println("1~" + (i-1) + " 합 : " + sum); } 실행결과 : 1~100 합 : 5050 |
- do-while문 : while문은 조건을 먼저 검사한 후에 실행되지만, do-while문은 실행 후 조건을 검사하므로 무조건 첫번째는 실행이 된다. 먼저 do 중괄호 내부를 실행하고 그 다음 조건식이 true가 되면 다시 중괄호 내부를 반복해서 실행한다. do-while문에서는 작성 시 while뒤에 반드시 세미콜론(;)을 붙여주어야 한다.
public static void main(String[] args) {
int i = 20; //조건식이 false여도 초기값 한 번은 무조건 수행 do { System.out.println(i); i++; }while(i<=10); } 실행결과 : 20 |
- break문 : for문, while문, do-while문, switch문의 반복을 종료할 때 사용한다.
for문 -> for문 안의 뒷 문장은 실행되지 않고 for문을 빠져나온다.
중첩 for문 -> break문이 있는 for문만 빠져나온다.
바깥문 반복문에 이름:을 붙이고 break 이름;을 사용 시 바깥쪽에 있는 for문까지 빠져나온다.
public static void main(String[] args) {
//주사위를 굴려 3이 나오면 종료 while(true) { int num = (int)(Math.random()*6)+1; System.out.println(num); if(num==3) { break; } } System.out.println("프로그램 종료");
실행결과 : 2
3 프로그램 종료 |
public static void main(String[] args) {
//중첩반복문 break로 바깥문 반복문까지 종료 //반복문 이름(Outter)을 사용하지 않으면 안쪽 반복문만 종료된다. Outter: for(char name='A'; name<='Z'; name++) { for(char name2='a'; name<='z'; name2++) { System.out.println(name + "-" + name2); if(name2=='g') { break Outter; } } } System.out.println("프로그램 실행 종료"); } 실행결과 : A-a
A-b A-c A-d A-e A-f A-g 프로그램 실행 종료 |
- continue문 : for문, while문, do-while문 내부에서 실행되면 증감식 또는 조건식으로 돌아간다. continue문은 반복문을 종료하지 않고 계속 반복을 수행한다는 점이 break문과 다르다.
public static void main(String[] args) {
//continue문을 사용한 for문에서 1~10 사이의 짝수 출력 for(int i=1; i<=10; i++) { if(i%2 !=0) {//2로 나눈 나머지가 0이 아니 경우 = 홀수 continue; } System.out.println(i); } } 실행결과 : 2
4 6 8 10 |