안녕하세요, 코린이의 코딩 학습기 채니 입니다.
개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.
반복 제어문 중 하나인 for 문에 대해서 알아보겠습니다.
for문과 또 다른 문법인 while은 서로 상위호환합니다.
☞ for문
- 초기식 : 증감 변수 선언(시작할 때 단 한 번만 실행!)
- 조건식 : 반복문 실행 여부를 결정하는 논리식 (결과가 true가 나오는 동안 실행 구문 계속 반복)
- 증감식 : 증감 변수에 대한 변수의 증감 처리
//기본구문
for(초기식;조건식;증감식) {
//실행구문
}
for(int i = 0; i < 10; i++) {
System.out.print(i + " ");
}
@콘솔출력값
0 1 2 3 4 5 6 7 8 9
for문이 실행되면
초기식 실행 → 조건식(t) → 실행구문 실행 → 증감처리
→ 조건식(t) → 실행 구문 실행 → 증감처리 ..... 반복 → 조건식(f) for문 탈출
위와 같은 실행 순서를 갖게 됩니다.
'0번째부터 i가 10보다 작을 때까지 i를 출력하라' 라는 의미를 가진 for문이 실행되는 것이죠.
/**
* 1 ~ 20까지 출력
* 20 ~ 1까지 출력
* 11 ~ 15까지 출력
* 홀수만 20까지 출력
* 짝수만 20~2까지 출력
*/
public void test2() {
for(int i = 1; i <=20; i++) {
System.out.print(i + " ");
}
System.out.println();
for(int i = 20; i >=1; i--) {
System.out.print(i + " ");
}
System.out.println();
for(int i = 11; i <= 15; i++) {
System.out.print(i + " ");
}
System.out.println();
//증감 변수 이용하여 홀수 출력
for(int i = 1; i <= 20; i+=2) {
System.out.print(i + " ");
}
System.out.println();
//if문 이용하여 짝수 출력
for(int i = 20; i >= 1; i--) {
if(i % 2 == 0)
System.out.print(i + " ");
}
System.out.println();
}
@콘솔출력값
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
11 12 13 14 15
1 3 5 7 9 11 13 15 17 19
20 18 16 14 12 10 8 6 4 2
원하는 결과 출력에 따라 증감 변수의 값과 반복 횟수, 증감 처리 등을 조절할 수 있습니다.
※ for문의 초기식 안에서 변수 선언 시, for문의 내부에서만 사용할 수 있고 for문이 끝나면 (중괄호가 닫히면) 변수는 사라집니다.
구구단 출력하기
public void test3() {
Scanner sc = new Scanner(System.in);
System.out.print("> 단을 입력하세요 : ");
int dan = sc.nextInt();
System.out.printf("====%d단====\n", dan);
for(int i = 1; i < 10; i++ ) {
System.out.printf("%d X %d = %d\n", dan, i, dan*i);
}
}
@콘솔출력값
> 단을 입력하세요 : 3
====3단====
3 X 1 = 3
3 X 2 = 6
3 X 3 = 9
3 X 4 = 12
3 X 5 = 15
3 X 6 = 18
3 X 7 = 21
3 X 8 = 24
3 X 9 = 27
고정 값이 단이므로 for문의 변수는 값으로 설정하여 구구단을 출력할 수 있습니다.
이름과 반복횟수 입력 받고 출력하기
public void test4() {
Scanner sc = new Scanner(System.in);
System.out.print("> 이름을 입력하세요 : ");
String name = sc.next();
System.out.print("> 반복횟수를 입력하세요 : ");
int loop = sc.nextInt();
for(int i = 1; i <= loop; i++) {
System.out.println(name + " " + i);
}
}
@콘솔출력값
> 이름을 입력하세요 : 홍길동
> 반복횟수를 입력하세요 : 10
홍길동 1
홍길동 2
홍길동 3
홍길동 4
홍길동 5
홍길동 6
홍길동 7
홍길동 8
홍길동 9
홍길동 10
위 처럼 사용자가 반복횟수를 매번 원하는 만큼 조정할 수 있습니다. (조건식)
1~10 합 구하기 (누적변수)
public void test5() {
//누적변수 선언
int sum = 0;
for(int i = 1; i <= 10; i++) {
sum+=i;
}
System.out.println(sum);
}
@콘솔출력값
55
여기서 주의할 점!
반드시 누적변수는 for문 밖에 선언해야합니다.
☞ for문 내에 선언하게 된다면, for문이 돌 때마다 누적변수가 초기화 될 것이며 for문 밖에서 변수 선언이 불가할 것 입니다.
// int sum = 0;
for(int i = 1; i <= 10; i++) {
//누적변수 for문 내에 위치 - for문이 돌 때마다 0으로 초기화
int sum = 0;
sum+=i;
System.out.println(sum);
}
@콘솔출력값
1 2 3 4 5 6 7 8 9 10
for문이 돌 때마다 sum 변수의 값이 0으로 초기화 되기 때문에 출력값은 i+0이기 때문에 i의 값만 출력 되었습니다.
두 수를 입력 받고 두 수 사이의 홀수 값 출력하기
public void test6() {
Scanner sc = new Scanner(System.in);
System.out.print("> 정수1를 입력하세요 : ");
int num1 = sc.nextInt();
System.out.print("> 정수2를 입력하세요 : ");
int num2 = sc.nextInt();
int big = num1 < num2 ? num2 : num1;
int small = num1 > num2 ? num2 : num1;
for(int i = small; i <= big; i++) {
if(i % 2 == 1)
System.out.print(i + " ");
}
@콘솔출력값
> 정수1를 입력하세요 : 5
> 정수2를 입력하세요 : 10
5 7 9
삼항 연산자로 큰 수, 작은 수를 미리 판별 후 for문을 돌렸습니다.
☞ for문 무한 루프
- 초기식, 조건식, 증감식 생략 가능하며, 조건식은 생략 시 true가 자동 삽입
- 조건식이 true이므로 계속해서 반복 실행
- break 키워드를 이용하여 무한 루프 탈출
public void test7() {
String menu = "--------------------\n"
+ "1. 떡볶이(3000원)\n"
+ "2. 순대(3500원)\n"
+ "3. 어묵(2500원)\n"
+ "--------------------\n"
+ "선택 : ";
Scanner sc = new Scanner(System.in);
int sum = 0;
//무한루프
for(;;) {
System.out.print(menu);
String choice = sc.next();
switch(choice) {
case "1": sum+=3000; break;
case "2": sum+=3500; break;
case "3": sum+=2500; break;
}
System.out.print("> 더 주문하시겠습니까?(y|n) : ");
char add = sc.next().charAt(0);
//add가 n면 break로 무한루프 탈출!
if(add == 'n')
break;
}
System.out.println("주문해주셔서 감사합니다.");
System.out.println("결제 금액은 " + sum + "입니다.");
}
@콘솔출력값
--------------------
1. 떡볶이(3000원)
2. 순대(3500원)
3. 어묵(2500원)
--------------------
선택 : 1
> 더 주문하시겠습니까?(y|n) : y
--------------------
1. 떡볶이(3000원)
2. 순대(3500원)
3. 어묵(2500원)
--------------------
선택 : 2
> 더 주문하시겠습니까?(y|n) : n
주문해주셔서 감사합니다.
결제 금액은 6500입니다.
'Java > Java' 카테고리의 다른 글
제어 키워드) break, continue 제어 키워드 (0) | 2022.03.08 |
---|---|
반복문) while문, do-while문, while문 무한루프 (0) | 2022.03.07 |
제어문) switch문, switch문 fall-through (0) | 2022.03.04 |
제어문) if문, if-else문, if- else if문, 중첩 if문 (0) | 2022.03.04 |
메소드란?, 매개변수가 있는/없는 메소드, 리턴 값이 있는/없는 메소드 (0) | 2022.03.03 |