for
반복문
- 프로그램 흐름을 제어하는 제어문 중 하나.
- 어떤 실행코드를 반복적으로 수행시켜 준다.
- 반복문 안에서 선언된 변수는 반복문 밖에서는 쓸 수 없다.
for문
- [표현법] for(초기식; 조건식; 증감식) { 반복적으로 실행시키고자 하는 코드 더미 }
- 초기식
: 반복문이 수행될 때 "처음에 단 한 번만 실행하는 구문"
(반복문 안에서 사용될 변수를 선언 및 초기화하는 작업) - 조건식
: "반복문이 수행될 조건"을 작성하는 구문.
조건식이 true일 경우 해당 반복을 실행, flase가 되는 순간 반복문을 탈출한다.
(보통 초기식에서 제시된 변수를 가지고 조건식을 정한다.) - 증감식
: 반복문을 제어하는 변수 값을 증감시키는 구문
- 초기식
- 초기식, 조건식, 증감식에 쓰이는 변수는 전부 같을 필요는 없으나, 초기식에 제시된 변수로 통일하는 게 일반적이다.
(조건식의 변수는 다른 걸 쓰더라도 초기식에 제시된 변수로 증감식을 작성하는 게 좋다.)
▷ for(int i = 0; i <= 10; i++;) {
System.out.print(i + "\t");
}
package d.loop;
import java.util.Scanner;
public class For {
public static void main(String[] args) {
// 1에서 100까지의 총합을 구하기
int sum = 0;
for(int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("1에서 100까지의 총합 : " + sum + "\n");
// 정수 n을 입력 받아 n부터 100까지 짝수의 개수를 구하기
Scanner sc = new Scanner(System.in);
System.out.print("정수 입력 : ");
int n = sc.nextInt();
int cnt = 0;
for(int i = n; i < 101; i++) {
if(i % 2 == 0) {
cnt++;
}
}
System.out.printf("%d부터 100까지 짝수의 개수 : %d \n\n", n, cnt);
sc.close();
// 구구단 2단부터 9단까지 출력
for(int i = 2; i < 10; i++) {
System.out.printf("===== %d단 =====\n", i);
for(int j = 1; j < 10; j++) {
System.out.printf("%d * %d = %d \n", i, j, (i * j));
}
System.out.println();
}
}
}
while
while문
- for문과는 다르게 증감식을 반복코드 안에 작성해줘야 한다.
- [표현법] while(조건식) { 반복적으로 실행시키고자 하는 코드 더미 및 증감식 }
- 조건식을 'true'로 하는 것으로 무한 반복하는 반복문을 만들 수 있다.
▷ while(true) {
System.out.println(i);
i++;
}
do-while문
- [표현법] do { 반복적으로 실행시키고자 하는 코드 더미 및 증감식 } while(조건식);
▷ do {
System.out.println(i);
i++;
} while(i != 10); - 기존의 for/while문은 처음 수행될 때 조건검사 후 true일 경우에만 반복코드를 실행하지만,
do-while문의 경우 첫 실행은 조건검사 없이 무조건 실행한다. - 조건식은 반복코드 실행 후에 검사한다.
- 조건식이 true일 경우 : 조건식이 false가 될 때까지 해당 코드를 반복한다.
- 조건식이 false일 경우 : 즉시 반복문을 탈출한다.
package d.loop;
import java.util.Scanner;
public class While {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// while <0을 입력할 때까지 입력한 값을 계속 더하기>
int sum = 0, cont = 1;
int num = 1;
while(num != 0) {
System.out.printf("%d번째 정수 입력 : ", cont);
num = sc.nextInt();
sum += num;
cont++;
}
System.out.println("입력한 값의 합계 : " + sum + "\n");
// do-while <1 ~ 10까지의 랜덤 숫자 맞추기>
int random = (int)(Math.random() * 10 + 1);
int answer = 0;
cont = 0;
do {
System.out.printf("숫자 맞추기 ( %d회차 ): ", ++cont);
answer = sc.nextInt();
if(answer < 1 || answer > 10) {
System.err.println("1부터 10까지의 숫자를 입력해주세요.\n");
cont--;
}
} while(answer != random);
System.out.println("축하드립니다! 정답을 맞추셨습니다~!\n");
sc.close();
}
}
jump
break
- 반복문, switch문 안에서 사용되는 분기문
- break가 실행되는 순간 현재 속해있는 반복문 또는 switch문을 강제로 탈출한다.
(하나의 반복문만 탈출하기 때문에, 중첩이 되어있는 경우엔 break문이 실행된 해당 반복문만 탈출한다.) - break 이후의 반복문, switch문 코드는 실행되지 않으며, 다음 코드부터 진행된다.
- 특정 조건을 만족하면 반복문이 종료되게 할 때 유용하다.
- [표현법] break;
continue
- 반복문에서 사용되는 분기문
- continue 실행 시 그 뒤의 반복문의 코드를 실행하지 않고, 곧바로 다시 반복문의 상단으로 이동해 실행한다.
(break문과는 다르게 반복문을 빠져나가지 않는다.) - 전체 반복 중에 특정 조건을 만족하는 경우를 제외하고자 할 때 유용하다.
- [표현법] continue;
package d.loop;
import java.util.Scanner;
public class Jump {
public static void main(String[] args) {
// break <입력한 값의 총합 구하기>
Scanner sc = new Scanner(System.in);
int sum = 0;
System.out.println("===== 5개의 숫자 계산기 =====");
System.out.println("1. 5개의 정수를 입력하세요.");
System.out.println("2. 0을 입력하면 5개를 다 입력하지 않아도 종료됩니다.\n");
for(int i = 1; i <= 5; i++) {
System.out.print("정수 입력 : ");
int num = sc.nextInt();
if(num == 0) {
break;
}
sum += num;
}
System.out.println("입력한 값의 총합 : " + sum + "\n");
// continue <랜덤 숫자 맞추기 ~응용편~>
System.out.println("===== 랜덤 숫자 맞추기 =====");
System.out.println("1 ~ 10 사이의 랜덤한 숫자를 맞춰보세요.");
int cnt = 0;
int random = (int)(Math.random() * 10 + 1);
int user;
do {
System.out.print("정수 입력 : ");
user = sc.nextInt();
if(user < 1 || user > 10) {
System.out.println("1 ~ 10 사이의 정수만 입력해주세요.\n");
continue;
}
cnt++;
} while(user != random);
System.out.printf("정답입니다! %d회차만에 맞추셨습니다!\n", cnt);
// break + continue <구구단 계산 놀이>
System.out.println("===== 구구단 계산 놀이 =====");
System.out.println("1. 주어진 식을 보고 정답을 입력하세요.");
System.out.println("2. 틀리면 다시 입력합니다.");
System.out.println("3. 맞추면 점수를 얻고 다음 문제가 나타납니다.");
System.out.println("4. 종료시 점수가 공개됩니다.");
int score = 0;
while(true) {
int a = (int)(Math.random() * 9 + 1);
int b = (int)(Math.random() * 9 + 1);
System.out.printf("\n%d * %d = ? : ", a, b);
int answer = sc.nextInt();
int cont = 1;
while(answer != (a * b)) {
System.out.println("오답입니다... 다시 입력하세요.\n");
System.out.printf("%d * %d = ? : ", a, b);
answer = sc.nextInt();
}
score += 10;
System.out.println("정답입니다!");
System.out.print("게임을 종료하시려면 0을 입력해주세요. 계속하시려면 아무 숫자나 누르시면 됩니다. : ");
cont = sc.nextInt();
if(cont != 0) {
continue;
}
System.out.println("\n게임이 종료되었습니다.");
System.out.println("점수 : " + score);
break;
}
sc.close();
}
}
.
'JavaStudy' 카테고리의 다른 글
e.array (0) | 2024.07.08 |
---|---|
c.control (0) | 2024.07.04 |
b.operator (0) | 2024.07.03 |
a.basic (1) | 2024.07.01 |