for(초기문; 조건문; 증감문) { 실행문 }
- 초기문은 최초 1번만 실행한다.
- 초기문 → 조건문 → 실행문 → 증감문→ 조건문 → 실행문 → 증감문 ... 으로 반복 처리한다.
- 배열이나 컬렉션 처리에서 많이 사용한다.
- 연속된 숫자를 생성할 때 주로 사용한다.
1부터 10까지 출력
for(int n = 1; n <= 10; n++) {
System.out.print(n); // 12345678910 출력
}
10부터 1까지 출력
for(int m = 10; m > 0; m--) {
System.out.print(m); // 10987654321 출력
}
구구단 7단 출력
for(int i = 1; i < 10; i++) {
System.out.println("7 X " + i + " = " + (7 * i));
}
/*
7 X 1 = 7
7 X 2 = 14
7 X 3 = 21
7 X 4 = 28
7 X 5 = 35
7 X 6 = 42
7 X 7 = 49
7 X 8 = 56
7 X 9 = 63
1 ~ 100 사이의 모든 3의 배수만 출력
for(int j = 1; j <= 100; j++) {
if(j % 3 == 0) {
System.out.print(j + " ");
}
}
// 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99
1 ~ 100 모든 정수 더하기
int total = 0;
for(int i = 1; i <= 100; i++) {
total += i;
}
System.out.print("전체 합계 : " + total); // 전체 합계 : 5050
begin과 end 중 누가 큰 지 모르는 상황에서
begin을 end보다 항상 작은 값으로 바꾼 뒤, begin ~ end 모든 정수 더하기
int begin = 100;
int end = 1;
if(begin > end) {
int temp;
temp = begin;
begin = end;
end = temp;
}
int sum = 0;
for(int n = begin; n <= end; n++) {
sum += n;
}
System.out.println(sum); // 5050
평점(1~5)에 따른 별(★) 출력
int point = 5;
String star = "";
// n=0으로 초기화하여 n < point라 했다.
// 만약 n=1로 초기화하면 n <= point로 작성할 수 있다.
for(int n = 0; n < point; n++) {
star += "★";
}
System.out.print(star); // ★★★★★
1일차 1교시
1일차 2교시
...
1일차 8교시
2일차 1교시
...
3일차 8교시
for(int day = 1; day <= 3; day++) {
for(int hour = 1; hour <= 8; hour++) {
System.out.println(day + "일차 " + hour + "교시");
}
}
2단부터 9단까지
for(int i = 2; i <= 9; i++) {
for(int j = 1; j <= 9; j++) {
System.out.println(i + " X " + j + " = " + i*j);
}
}
2단부터 5x5=25까지 _ 기본풀이
for(int i = 2; i <= 5; i++) {
for(int j = 1; j <= 9; j++) {
System.out.println(i + " X " + j + " = " + i*j);
if(i == 5 && j == 5) {
break;
}
}
}
2단부터 5x5=25까지 _ 라벨(label)을 이용한 풀이
outer: for(int i = 2; i <= 9; i++) {
for(int j = 1; j <= 9; j++) {
System.out.println(i + " X " + j + " = " + i*j);
if(i == 5 && j == 5) {
break outer;
}
}
}
2x1=2 3x1=3 ... 9x1=9
2x2=4 3x2=6 ... 9x2=18
...
for(int n = 1; n <= 9; n++) {
for(int dan = 2; dan <= 9; dan++) {
System.out.print(dan + " X " + n + " = " + dan*n + "\t");
} // 이때 줄바꿈을 하지않고,
System.out.println(); // 2단부터 9단까지 1만 곱한 뒤에 줄바꿈을 해준다.
}
while(조건문) { 실행문 }
- 조건문을 통해서 종료 시점을 판단한다.
- 파일 읽기, 데이터베이스 데이터 읽기에서 많이 사용한다.
1부터 5까지 출력
int a = 1;
while(a <= 5) {
System.out.println(a);
a++;
}
보이스피싱 사기로 통장 잔액에서 450씩 계속 인출된 내용을 나타내자.
int balance = 79350;
int money = 450;
while(balance >= money) {
System.out.println("잔액 " + balance + " 인출액 " + money);
balance -= money;
}
System.out.println("잔액 " + balance);
/*
잔액 79350 인출액 450
잔액 78900 인출액 450
.
.
.
잔액 1050 인출액 450
잔액 600 인출액 450
잔액 150
- while 수행순서
- 조건 (n <= 10)을 먼저 판단
- true인 경우 { } 수행
- false인 경우 { ] 빠져나옴
→ 조건이 거짓이면, 한 번도 수행X
int n = 1;
int sum = 0;
while(n <= 10) {
sum += n;
n++;
}
System.out.println(sum);
- do while 수행순서
- { } 먼저 수행
- 조건 (n <= 10) 판단
- true인 경우 { } 수행
- false인 경우 { ] 빠져나옴
→ 조건이 거짓이라도, 한 번은 수행
int sum = 0;
do {
sum += n;
n++;
} while(n <= 10);
System.out.println(sum);
switch(표현식) { … break; // switch문 종료 … } ---------------------------------------------------------------------- while(조건문) { … break; // while문 종료 … } ---------------------------------------------------------------------- for(초기문; 조건문; 증감문) { … break; // for문 종료 … }
- 모금액 목표 : 100,000원, 한 번에 30원씩 모금한다.
1회 모금액 30원 현재 30원
2회 모금액 30원 현재 60원
...
int total = 0;
int money = 30;
int serial = 0;
int goal = 100000;
while(true) {
if(total >= goal) {
break;
}
total += money;
serial++;
System.out.println(serial + "회 모금액" + money + "\t현재 " + total + "원");
}
/*
1회 모금액30 현재 30원
2회 모금액30 현재 60원
.
.
.
3333회 모금액30 현재 99990원
3334회 모금액30 현재 100020원
while(조건문) { … continue; // while(조건문)으로 이동해서 조건문이 만족하는지 검사 … } ---------------------------------------------------------------------- for(초기문; 조건문; 증감문) { … continue; // 증감문으로 이동한 뒤 조건문이 만족하는지 검사 … }
1 ~ 100 중에서 3의 배수를 제외하고 모두 더하기
int n = 0;
int total = 0;
while (n < 100) {
n++;
if(n % 3 == 0) {
continue; // 3의 배수라면 n을 더하지 않고, while문으로 돌아간다.
}
total += n;
}
System.out.println("합계 " + total); // 합계 3367
위에 문제를 continue 없이 코드 작성
total = 0;
n = 0;
while(n < 100) {
n++;
if(n % 3 != 0) { // 3의 배수가 아니라면 total에 n을 더해줘라.
total += n;
}
}