- 특정 조건에 따라 연산을 반복해서 수행하고 싶을때 사용하는 문맥
for
(초기값;
조건문;
증가연산
){ (연산) }
형태로 사용- 특정 조건은
초기값
과조건문
을 통해서 정의- 반복할때마다 값을 증가 시키려면
증가연산
을 정의초기값
이조건문
을 만족할때까지(연산)
을 수행하면서 회차마다증가연산
을 수행
public class W15 { public static void main(String[] args) { // for문 // (초기값 ; 조건문 ; 증가연산) for (int i = 0; i < 4; i++) { System.out.println(i + "번째 출력!"); } } }
0번째 출력!
1번째 출력!
2번째 출력!
3번째 출력!
// i는 0부터 4보다 작은 수까지 반복해서 출력 되기 때문에 0,1,2,3만 출력됨
for 소괄호 안에 값이 3개나 들어가기 때문에 이걸 2개로 줄여주는 방법
향상된 for 문은 연속된 변수목록을 출력할때 사용
for
(변수 타입
변수 명
: 목록변수
) { (연산) }
형태로 사용
변수 타입
과 변수 명
은 for 문안에서 연산을 수행할 변수를 정의
목록변수
는 값 여러개를 하나의 변수로 저장하고 싶을때 사용
int[] numbers = {3, 6, 9, 12, 15}; for (int number: numbers) { System.out.print(number + " "); // 3 6 9 12 15 출력 }
int[ ]에서 [ ]는 배열을 뜻함
3, 6, 9, 12, 15는 배열이므로 { }로 감싸줌
int[] numbers = {3, 6, 9, 12, 15}; for (int i = 0; i < numbers.length; i++) { System.out.print(numbers[i] + " "); } // 3 6 9 12 15 출력
numbers.length => 배열의 길이
위의 ex)와 동일
for 문과 동일하게 특정 조건에 따라 연산을 반복해서 수행하고 싶을때 사용
초기값 없이 조건문만 명시하여 반복
while(조건문)
{ (연산) }
형태로 사용
- 위처럼 while 문으로 사용하면 조건문을 만족해야지만 연산이 반복수행됩니다.
- 한번 반복할때마다 조건문을 체크해서 조건문이 불만족(false) 이면 반복 중단
do { (연산) }
while(조건문)
형태로 사용
- 위처럼 do-while 문으로 사용하면 최초 1회 연산수행 후 조건문을 체크하여 더 반복할지 결정
- 반복하게 된다면 그 이후에는 한번 반복할때마다 조건문을 체크해서 조건문이 불만족(false) 이면 반복 중단
public class W16 { public static void main(String[] args) { int number = 0; while (number < 3) { //number < 3인 동안 number++; // 0 -> 1 1 -> 2 2 -> 3 System.out.println(number + "출력"); } }
int number = 4; do { // 이 로직을 먼저 수행 System.out.println(number + "출력!"); }while (number < 3); // 4출력!
number를 먼저 출력
number는 영원히 3보다 크기 때문에 while문 실행 X
break;
명령을 호출하면 가장 가까운 블럭의 for 문 또는 while 문을 중단 (또는 switch)
반복문 안에서 break;
형태로 사용
int number = 0; while (number < 3) { number++; if (number == 2) { break; } System.out.println(number + "출력!"); } // 1출력!
number = 0 -> while문에 의해 number에 1이 추가됨
number = 1이기 때문에 if문으로 가지 않고 그대로 출력됨
number = 1 -> while문에 의해 number에 1이 추가됨
number = 2이기 때문에 if문을 돌아 break;
break;이기 때문에 if문과 while문을 탈출함
for (int i = 0; i < 10; i++) { System.out.println("i:" + i); if (i ==2) { break; // i가 2일 때, 가장 바깥 반복문 종료 } for (int j=0; j < 10; j++) { System.out.println("j:" + j); if (j == 2) { break; // j가 2일 때, 안쪽 반복문 종료 } } }
출력
i = 0인 경우 그대로 출력
if문을 만족하지 않으므로 for문으로 넘어감
j = 0인 경우 그대로 출력
if문을 만족하지 않으므로 다시 for문(j)으로 넘어감
j = 2일 때 break이므로 for문을 빠져나와 위의 for문(i)으로 넘어감
위 과정을 반복하다가 i = 2가 되면 반복문이 종료되어 밑의 for문(j)로 넘어가지 않음
for 문 또는 while 문에서 해당 순서를 패스하고 싶을때 continue 명령을 사용
반복문 안에서 continue;
형태로 사용
int number = 0; while (number < 3) { number++; if (number == 2) { continue; } System.out.println(number + "출력!"); } // 1출력!, 3출력!
number = 0 -> while문에 의해 number = 1
1은 if문에 충족하지 않으므로 그대로 출력
number = 1 -> while문에 의해 number = 2
if문을 만족하므로 continue
continue 되는 순간 다음 반복문으로 넘어감
number = 2 -> while문에 의해 number = 3
3은 if문에 충족하지 않으므로 그대로 출력
number = 4 -> while문에 충족하지 않으므로 그대로 종료
for (int i = 2; i <= 9 ; i++) { // 구구단의 첫 번째 수 for (int j = 1; j <= 9 ; j++) { // 구구단의 두 번째 수 System.out.println(i + "곱하기" + j + "는" + (i*j) + "입니다." ); } }
구구단은 2개의 숫자를 곱하는 것이기 때문에 for문을 2개 사용
2단(2 X 1)부터 출력
2단 ~ 9단까지 출력됨
Scanner sc = new Scanner(System.in); int passNum = sc.nextInt(); // 출력을 제외할 구구단 수 합 for (int i = 2; i <= 9 ; i++) { // 구구단의 첫 번째 수 if (i == passNum) { continue; } for (int j = 1; j <= 9 ; j++) { // 구구단의 두 번째 수 System.out.println(i + "곱하기" + j + "는" + (i*j) + "입니다." ); } }
출력을 제외할 값을 입력 받기 위해 Scanner 사용
출력을 제외할 수가 i와 같아지면 continue
구구단의 두 번째 수 for문으로 가지 않고 다시 구구단의 첫 번째 수 for문으로 넘어감
9단까지 반복
ex) 2를 입력 받으면 2단을 제외한 나머지가 출력됨
ex) 3을 입력 받으면 3단을 제외한 나머지가 출력됨