한화시스템/백엔드
[BE] JAVA_반복문
jjam-mo
2024. 7. 13. 15:56
1. 반복문 개요
1-1. 반복문이란?
💡특정 코드를 반복하여 수행할 수 있도록 제어하는 명령문
1-2. 반복문 종류
💡대표적인 반복문 3가지
1. for 문
2. while 문
3. do-while 문
/* 실행하기 위한 main 클래스 */
package com.ohgiraffers.section02.looping;
public class Application {
public static void main(String[] args) {
A_for aClass = new A_for();
/* 설명. 단독 for문 흐름 확인용 메소드 호출 */
aClass.testSimpleForStatement();
aClass.testForExample1();
aClass.testForExample2();
B_nestedFor bClass = new B_nestedFor();
bClass.printGugudanFromTwoToNine();
bClass.printStars();
bClass.printStars1();
C_while cClass = new C_while();
cClass.testSimpleWhileStatement();
cClass.testWhileExample();
D_doWhile dClass = new D_doWhile();
dClass.testSimpleDoWhileStatement();
}
}
2. for 문 개요

2-1. for 문 표현식
for(1-초기식; 2-조건식; 4-증감식) {
3-조건을 만족하는 경우 수행할 구문(반복할 구문);
}
package com.ohgiraffers.section02.looping;
import java.util.Scanner;
public class A_for {
/* 필기. 초기식을 갔다가 조건식을 간다. */
public void testSimpleForStatement() {
// 동안(1부터; 10까지; 1씩증가) {
// 1부터 10까지 반복하며 출력
// }
for (int i = 1; i <= 10; i++) { // 디버그 모드 시 엔터 눌러 구분해서 보면 좋다.
System.out.println("i = " + i);
}
}
public void testForExample1() {
/* 설명. 변수들에 담긴 값들에 각각 2를 곱하고 1을 더하여 sum에 누적하기 */
int num1 = 1;
int num2 = 2;
int num3 = 3;
int num4 = 4;
int num5 = 5;
int sum = 0;
sum += 2 * num1 + 1;
sum += 2 * num2 + 1;
sum += 2 * num3 + 1;
sum += 2 * num4 + 1;
sum += 2 * num5 + 1;
System.out.println("sum = " + sum);
/* 설명. for문을 통해 개선해 보자. */
int forSum = 0;
/* 설명. 초기값 0부터일 때 */
for (int i = 0; i < 5; i++) {
forSum += 2 * (i + 1) + 1;
}
/* 설명. 초기값 1부터일 때 */
for (int i = 1; i <= 5; i++) {
forSum += 2 * i + 1;
}
System.out.println("forSum = " + forSum);
}
public void testForExample2() {
Scanner sc = new Scanner(System.in);
System.out.print("limit 값 입력: ");
int limit = sc.nextInt(); // limit은 전역변수, 클래스 안에서는 다 사용가능
int sum = 0;
for (int i = 2; i < limit; i += 2) { // i는 지역변수, for문 안에서만 사용가능
sum += i;
}
System.out.println("sum = " + sum);
}
}
package com.ohgiraffers.section02.looping;
import java.util.Scanner;
public class B_nestedFor {
public void printGugudanFromTwoToNine() {
/* 설명.
* 2단
* 2 * 1 = 2
* 2 * 2 = 4
* 2 * 3 = 6
* ...
* 3단
* 3 * 1 = 3
* 3 * 2 = 6
* 3 * 3 = 9
* ...
* ...
* 9 * 9 = 81
* */
for (int i = 2; i < 10; i++) { // 단(행, row)
System.out.println(i + "단 곱셈");
printGugudanOf(i);
System.out.println();
}
}
/* 설명. 단수를 넘겨주면 해당 단수의 곱셈 출력 기능 메소드 */
private static void printGugudanOf(int dan) {
for (int j = 1; j < 10; j++) { // 수(열, column)
System.out.println(dan + " * " + j + " = " + (dan * j));
}
}
/* 설명.
* 아래와 같은 별모양이 나오도록 작성해 보자.
* 정수를 입력하시오: 5
* *
* **
* ***
* ****
* *****
* */
public void printStars() {
Scanner sc = new Scanner(System.in);
System.out.print("정수를 입력하시오: ");
int input = sc.nextInt();
for (int i = 0; i < input; i++) {
placeStars(i);
System.out.println();
}
}
/* 설명. int 값을 주면 int 값의 수만큼 옆으로 *을 찍는 기능의 메소드 */
private static void placeStars(int i) {
for (int j = 0; j < (i + 1); j++) {
System.out.print("*");
}
}
/* 설명.
* 정수를 입력하세요: 5
* *
* **
* ***
* ****
* *****
* */
public void printStars1() {
Scanner sc = new Scanner(System.in);
System.out.print("정수를 입력하세요: ");
int input = sc.nextInt();
for (int i = 0; i < input; i++) {
placeSpace(input, i);
placeStars(i);
System.out.println();
}
}
/* 설명. 두 가지 전달인자를 활용한 공백 출력 기능의 메소드 */
private static void placeSpace(int input, int i) {
for (int j = 0; j < input - (i + 1); j++) {
System.out.print(" ");
}
}
}
3. while 문 개요

3-1. while 문 표현식
1-초기식;
while(2-조건식) {
3-조건을 만족하는 경우 수행할 구문(반복할 구문);
4-증감식;
}
package com.ohgiraffers.section02.looping;
import java.util.Scanner;
public class C_while {
public void testSimpleWhileStatement() {
int i = 1;
while (i <= 10) {
System.out.println("i = " + i);
i++;
}
}
public void testWhileExample() {
Scanner sc = new Scanner(System.in);
char answer = '\0';
while (!(answer == 'Y' || answer == 'y')) {
System.out.print("Y 또는 y 좀 눌러줄래?");
answer = sc.next().charAt(0);
}
System.out.println("시키는 대로 눌러줘서 감사합니다.");
}
}
4. do-while 문 개요

4-1. do-while 문 표현식
초기식;
do {
1회차에는 무조건 실행하고, 이후에는 조건식을 확인하여 조건을 만족하는 경우 수행할 구문(반복할 구문);
증감식;
} while(조건식);
package com.ohgiraffers.section02.looping;
import java.util.Scanner;
public class D_doWhile {
public void testSimpleDoWhileStatement() {
do {
System.out.println("실행될까?");
} while (false); // do-while은 이 부분 ';' 찍는다.
System.out.println("반복 종료 이후");
}
public void testDoWhileExample() {
int sumPrice = 0;
Scanner sc = new Scanner(System.in);
int choice = 0;
do {
System.out.println("담을래 뺄래?");
System.out.println("1. 담을래(+1000)");
System.out.println("2. 뺄래(-1000)");
System.out.println("3. 나갈래");
System.out.print("번호를 고르시오: ");
choice = sc.nextInt();
if(choice == 1) {
sumPrice += 1000;
} else if(choice == 2) {
sumPrice -= 1000;
}
System.out.println("현재 합계는: " + sumPrice);
} while(choice < 3);
System.out.println("휴~ 나왔다.");
}
}