- 반복문은 같은 작업을 여러번 반복할때 사용함.
- 프로그램에서 반복되는 작업을 쉽게 처리할 수 있도록 제공함.
- 정해진 횟수를 반복함.
- 1부터 100까지 합을 구하는 코드를 반복한다면 다음과 같다.
int sum = 0; for(int i=1; i<=100; i++) { sum += sum + i // 100번 반복 } System.out.println("1~100까지의 합: " + sum);
- for문 기본문법은 다음과 같다
for(①초기화식; ②조건식; ④증감식) { ③ 실행문 }<용어설명>
1) 초기화식: 반복문의 조건식에 비교값으로 사용되는 값을 초기화함.
2) 조건식: 초기식을 가지고 반복할 것인지 결정하는 식.
3) 증감식: 초기식에 선언한 값을 변경하여 반복문을 빠져나오는 용도.
- for문이 처음 실행될때 초기화식이 제일 먼저 실행.
- 그 다음 조건식을 평가해서 true이면 실행문 실행. false면 for문 종료
- 조건식이 true가 되어 실행문을 모두 실행하면 증감식 실행. 그리고 다시 조건식으로 돌아감.
- 즉, true일때 3>4>2 순서로 평가된다. false일때는 for문이 종료됨.
- 1부터 10까지 출력하는 코드
for(int i=1; i<=10; i++) { System.out.print(i + " "); }
- 1부터 9까지 출력하는 코드
for(int i=1; i<10; i++) { System.out.print(i); }
- 1~100까지의 합을 구하는 코드
int sum = 0; for(int i=1; i<=100; i++) { sum += i; } System.out.println("1~" + (i-1) + " 합 : " + sum);
- 중첩for문으로 구구단 출력하기
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)); } }
- 배열의 요소들을 모두 출력하는 예제
int[] arr = {1,2,3,4,5}; for(int i=0; i<arr.length; i++) { System.out.println(arr[i]); }
- 1~100까지의 홀수들의 합을 구하는 예제
int sum = 0; for (int i=1; i<=100; i++) { if(a % 2 == 1) { sum += i; } }
- 배열의 요소들 중에 짝수만 출력하는 예제
int[] arr = {1,2,3,4,5}; for(int i=0; i<arr.length; i++) { if(arr[i] % 2 == 0) { System.out.println(arr[i]); } }
- 1부터 100까지의 숫자 중 3의배수만 출력
for(int i=1; i<=100; i++) { if(i % 3 == 0) { System.out.println(i); } }
- 배열의 요소들 중에서 3의 배수만 출력하는 예제
int[] arr = {1,2,3,4,5,6,7,8,9}; for(int i=0; i<arr.length; i++) { if(i%3==0) { System.out.println(arr[i]); } }
- 1부터 50까지의 숫자 중 5의 배수이면서 3의 배수인 숫자들의 합을 구하는 예제
int sum = 0; for(int i=1; i<=50; i++) { if(i%5 == 0 && i%3 == 0) { sum += i; } } System.out.println("1~50까지 숫자 중 5의 배수이면서 3의 배수인 숫자들의 합: " + sum);
- 배열의 요소들의 평균값을 구하는 예제
int[] arr = {1,2,3,4,5}; int sum = 0; for(int i=0; i<arr.length; i++) { sum += arr[i]; } double avg = (double) sum / arr.length; System.out.println("배열들의 요소 평균값: " + avg);
- 1부터 100까지 숫자 중 3과 5의 공배수인 숫자들의 합을 구하는 예제
int sum = 0; for(int i=1; i<=100; i++) { if(i % 3 == 0 && i % 5 == 0) { sum += i; } } System.out.println("1~100까지 숫자 중 3과 5의 공배수인 숫자들의 합: " + sum);
- 배열에서 최댓값과 최솟값을 구하는 예제
int[] arr = {10,5,8,2,7}; int max = arr[0]; int min = arr[0]; for(int i=1; i<arr.length; i++) { if(arr[i] > max) { max = arr[i]; } if(arr[i] < min) { min = arr[i] } } System.out.println("배열에서 최댓값: " + max); System.out.println("배열에서 최솟값: " + min);
- for문을 이용해서 1부터 100까지의 정수 중에서 3의 배수의 총합을 출력
int sum = 0; for(int i=1; i<=100; i++) { if(i%3 == 0) { sum += i; } } System.out.println("1~100 사이의 3의 배수 총합: " + sum);
- 중첩 for문을 이용하여 방정식 4x+5y=60의 모든 해를 구해서 (x,y)형태로 출력
for(int x=0; x<=10; x++) { for(int y=0; y<=10; y++) { if(4*x+5*y==60) { System.out.println("(" + x + ", " + y + ")"); } } }
- 조건식이 true일때 계속해서 반복하고 false가 되면 반복을 멈춤.
- while문의 기본문법은 다음과 같다.
while (① 조건식) { ↓ 조건식이 true일경우 ② 실행문; }
- 예시: while문으로 1부터 10까지 출력
int i = 1; while (i<=10) { System.out.println(i + " "); i++; }
- 1부터 100까지 합을 구하는 코드
int sum = 0; int i = 1; while(i<=100) { sum += i; i++; } System.out.println("1~100까지의 합은 " + sum); } }
- 키보드에서 1, 2 입력하였을 때 속도를 증속, 감속 3 입력시 종료시키는 예제(중요함, 기업 코테문제)
Scanner scanner = new Scanner(System.in); boolean run = true; // while문의 조건식을 위한 변수 선언 int speed = 0; while(run) { // 메뉴 생성 System.out.println("------------------------"); System.out.println("1. 증속 | 2. 감속 | 3. 중지"); System.out.println("------------------------"); System.out.printl("선택> "); String strNum = scanner.nextLine(); // 키보드에서 입력한 내용을 읽음 if(strNum.equals("1")) { speed++; System.out.println("현재 속도: " + speed); } else if(strNum.equals("2")) { speed--; System.out.println("현재 속도: " + speed); } else if(strNum.equals("3")) { run = false; } } System.out.println("프로그램 종료"); } }
- while문과 Math.random() 메소드 이용하여 두개의 주사위를 던졌을때 나오는 눈을 (눈1, 눈2) 형태로 출력하고 눈의 합이 5가 아니면 주사위 던짐.
while(true) { int num1 = (int)(Math.random()*6)+1; int num2 = (int)(Math.random()*6)+1; System.out.println("(" + num1 + ", " + num2 + ")"); if(num1 + num2 == 5) { break; } }
- while문과 Scanner의 nextLine() 메소드를 이용해서 은행 입출력 시스템을 구현해라.
- 조건식에 의해 반복 실행한다는 점에서 while문과 동일함.
- do-while문의 실행흐름은 다음과 같다.
do { ① 실행문; } while (② 조건식);
- do-while문은 실행문이 우선 실행된다.
- 실행문이 모두 실행되면 조건식을 평가한다.
- 그 결과가 true이면 1>2 순으로 반복 실행하고 false면 종료.
- 키보드로 입력받은 내용을 조사하여 계속 반복할 것인지 조사
System.out.println("메시지를 입력하세요."); System.out.println("프로그램을 종료하려면 q를 입력하세요."); Scanner scanner = new Scanner(System.in); String input = ""; do { System.out.print(">"); input = scanner.nextLine(); // 키보드로부터 읽기 System.out.print(input); } while( ! input.equals("q")); // 입력된 내용이 q가 아니라면 반복 System.out.println(); System.out.println("프로그램 종료"); } }
- break문은 사용할때의 실행흐름을 제어한다.
- break는 if문과 같이 사용함.
- while문을 이용하여 주사위 번호 중 하나를 반복해서 뽑되 6이 나오면 종료
while(true) { int num = (int)(Math.random()*6)+1; System.out.println(num); if(num == 6) { break; } } System.out.println("프로그램 종료"); } }
- 만약, 반복문이 중첩될 경우 break문은 가장 가까운 반복문만 종료함.
- 바깥쪽 반복문까지 종료시키려면 break 이름; 사용
- 바깥쪽 for문은 'A'~'Z'까지 반복, 중첩 for문은 'a'~'z'까지 반복
중첩for문에서 lower변수가 'g'를 가지면 for문을 빠져나오도록 함.Outter:for(char upper='A'; upper<='Z'; upper++) { for(char lower='a'; lower<='z'; lower++) { System.out.println(upper + "-" + lower); if(lower == 'g') { break Outter; } } } System.out.println("프로그램 실행 종료"); } }
- break 사용하는 예제
int a = 5; for(int i=0; i<10; i++) { if(i==a) { break; } System.out.print(i); }
- while문에서 5이상의 값을 출력하고 반복문 종료
int i=0; while(true) { i++; if(i>=5) { System.out.println(i); break; } }
- for문에서 4이상의 값을 출력하고 반복문 종료
for(int i=0; i<10; i++) { if(a>=4) { System.out.println(i); break; } }
- 반복문인 for, while, do-while문에서 사용.
- continue문은 반복문을 종료하지 않고 계속 반복함.
- 1에서 10 사이의 수 중에서 짝수만 출력하고 홀수는 반복으로 넘어가기
for(int i=1; i<=10; i++) { if(i%2!=0) { // 2로 나눈 나머지가 0이 아닐 경우(홀수) continue; } System.out.print(i + " "); } } }
- while문에서 짝수를 출력하는 예제
int i=0; while(i<10) { i++; if(i%2==1); continue; } System.out.println(i); }
- for문에서 3의 배수를 출력하지 않은 예제
for(int i=1; i<=10; i++) { if(i % 3 == 0) { continue; } System.out.println(i); }
- for문에서 짝수 출력, 6이상의 값이 나오면 종료
for(int i=0; i<10; i++) { if(i%2 == 1) { continue; } System.out.println(i); if(a>=6) { break; } }
- while문에서 2의 배수를 출력하지 않고 8이상 값을 출력하고 반복문 종료.
int i=0; while(true) { i++; if(i%2==0) { continue; } if(a>=8) { System.out.println(i); break; } }
- break~continue 20문제는 토요일에 문제 풀고 카페에 올리기.