KDT/Java

231115 Java

001cloudid 2023. 11. 17. 08:51
728x90

반복문

프로그램 내에서 동일한 명령을 지정 횟수만큼 반복하여 수행하도록 제어하는 명령문

 

*반복문에서 지켜야하는 규칙
1. 초기화변수 : 반복을 시작하는 값을 저장해 놓은 변수 = 초기값
2. 조건식 : 반복횟수를 정한다.(조건을 만족할 때까지 반복 수행 → 조건이 만족하면 계속해서 반복을 수행)

조건식이 거짓이면 반복할 내용을 수행하지 않고 while문을 빠져나간다.
3. 증감연산자 : 반복횟수가 순차적으로 늘어나거나 줄어들어야 함

※증감연산자 : 하니씩 순차적으로 증가, 감소시키는 연산자
1. 단항으로 이루어진 증감연산자 : a++, ++a, a--, --a
2. 대입 연산자 : a = a + 1 → a +=1

*while문 

반복횟수를 모르거나 무한반복 시켜야하는 경우 주로 사용
형식) while(조건식){반복할 내용; 증감연산자}

int i = 1;

while(i<=10) {

System.out.println("i = " +i);

System.out.println("안녕하세요");

i++;}

반복문 while 1
그림 1. 반복문 while 1

 

ex1) 초기화 변수 내의 반복횟수 숫자값을 이용해서 1~10까지 합계 구하기

int i = 1; //초기화 변수 : 시작값을 직접 대입

int sum = 0; //초기화 변수값을 반복할 때마다 누적해서 저장해 놓는 변수

 

while(i<=10) {

System.out.println("i = " + i);

sum = sum + i;

System.out.println("sum = " + sum);

i++;

}

ex1 결과
그림 2. ex1 결과

 

ex2) 정수값을 입력 받아서 합계를 구하기 0을 입력 받으면 반복 종료, 종료 후 입력받은 정수값의 합계 출력

//무한 반복 : 초기화 변수(초기값), 조건식(반복횟수), 증감연산자 가 없음

 

int sum = 0;

while(true) {

System.out.println("정수값 입력(0입력시 종료)");

int i = sc.nextInt();

if(i==0) {

System.out.println("입력 종료");

break;

}

 

System.out.println("i = " + i);

sum = sum+ i;

}

System.out.println("sum = " + sum);

ex3 결과
그림 3. ex2 결과

중첩 while문
중첩 반복문을 사용하는 이유 : 바깥 반복문이 1회 수행되는 동안 안쪽 반복문은 모든 반복횟수를 수행해야 함.
단수(2~9단) * 곱해주는 값(1~9) = 곱한 값
구구단 출력 : 2*1=2 2*2=4

ex3)

int i = 2;

while (i <= 9) {int j = 1;

while ( j <= 9) {System.out.println(i + " * " + j + " = " + (i * j));

j++;

}

System.out.println();

i++;

}

ex3 결과
그림 4. ex3 결과

 

while문 : 조건을 먼저 검사해서 반복 수행 결정

do ~ while문 : 조건이 맞지 않아도 반드시 한 번은 수행하고 조건을 검사해서 반복할지 결정

int i = 15;

int sum = 0;

while(i<=10) {

sum += i;

i++;

}

System.out.println("합계 = " + sum);

이는 조건이 맞지 않기 때문에 결과는 0으로 나온다.

int i = 15;

int sum = 0;

do {

sum += i;

i++;

} while (i <= 10);

 

System.out.println("합계 = " + sum);

조건이 맞지 않아도 반드시 한 번은 수행을 하고 조건을 검사해 반복 수행할지 결정하기 때문에 결과는 15가 나온다.

 

//메뉴 선택

System.out.println("음료 선택 : 1.콜라 2.사이다 3.환타 4.이프로");

int menu = sc.nextInt();

if(menu==1) System.out.println("콜라를 선택");

else if(menu==2) System.out.println("사이다를 선택");

else if(menu==3) System.out.println("환타를 선택");

else if(menu==4) System.out.println("이프로를 선택");

System.out.println("메뉴를 다시 선택(1~4)");

while문으로 1~4까지 반복횟수를 만들어서 메뉴 선택 가능하도록 만들어보자

int menu = 0; // while문은 조건부터 먼저 검사. 초기값이 없으므로 while문 접근 안됨

while ((menu>=1) || (menu)<=4) {

System.out.println("음료 선택 : 1.콜라 2.사이다 3.환타 4.이프로");

menu = sc.nextInt();

if(menu==1) System.out.println("콜라를 선택");

else if(menu==2) System.out.println("사이다를 선택");

else if(menu==3) System.out.println("환타를 선택");

else if(menu==4) System.out.println("이프로를 선택");

System.out.println("메뉴를 다시 선택(1~4)");

 

int menu;

do { System.out.println("메뉴 선택 1. 콜라 2. 사이다. 3. 환타 4. 이프로");

menu = sc.nextInt();

 

if(menu==1) System.out.println("콜라를 선택");

else if(menu==2) System.out.println("사이다를 선택");

else if(menu==3) System.out.println("환타를 선택");

else if(menu==4) System.out.println("이프로를 선택");

else System.out.println("메뉴 다시 선택");

}

while ( (menu>=1) || (menu<=4));

 

ex4)

int num = 11;

int sum = 0;

 

while (num<=11) {

sum += num;

num++;

}

System.out.println("1부터 10까지 합은 " + sum);

 

int num1 = 11;

int sum1 = 0;

 

do {

sum1 += num1;

num1++;

System.out.println("1부터 10까지 합은 " + sum1);

 

} while (num1 <= 10);

// 11 <= 10

System.out.println("1부터 10까지 합은 " + sum1);

ex4 결과
그림 5. ex4 결과

 

ex5) 음료 선택에서 5를 입력 받으면 프로그램이 종료되게 만들어보자

while(true) {

System.out.println("메뉴 선택 1.콜라 2.사이다 3.환타 4.이프로");

int menu = sc.nextInt();

if (menu == 1) System.out.println("콜라를 선택");

else if (menu == 2) System.out.println("사이다를 선택");

else if (menu == 3) System.out.println("환타를 선택");

else if (menu == 4) System.out.println("이프로를 선택");

else if (menu == 5) {

System.out.println("입력 종료");

break;

}

else System.out.println("번호를 다시 입력");

}

ex5 결과
그림 6. ex5 결과

 

ex6) switch문으로 바꿔보기

boolean stop = true;

 

while(stop) {

System.out.println("숫자 입력");

int meun = sc.nextInt();

switch(meun) {

case 1 : System.out.println("콜라");

break;

case 2 : System.out.println("사이다");

break;

case 3 : System.out.println("환타");

break;

case 4 : System.out.println("이프로");

break;

case 5 : System.out.println("입력 종료");

stop = false;

break;

default : System.out.println("번호를 다시 입력");

}

}

ex6 결과
그림 7. ex6 결과

 

ex7) 로그인 예제

String id;

String pw;

System.out.println("ID 입력");

id = sc.nextLine();

 

if(id.equals("abcde")) {System.out.println("ID 일치");

System.out.println("비밀번호 입력");

pw = sc.nextLine();

 

if(pw.equals("12345")) {System.out.println("PW 일치");

System.out.println("로그인 성공");

}

else {

do { System.out.println("PW 재입력");

pw = sc.nextLine();}

while(!(pw.equals("12345")));

System.out.println("재입력한 PW가 일치");

System.out.println("로그인 성공");

}

}else {System.out.println("해당 ID가 존재하지 않음");}

}

 

728x90

'KDT > Java' 카테고리의 다른 글

231120 Java  (0) 2023.11.20
231116 Java  (0) 2023.11.17
231113 Java  (0) 2023.11.13
231109 Java - 조건문3  (0) 2023.11.09
231108 Java - 탐욕 알고리즘, 조건문 2  (0) 2023.11.08