반복문
프로그램 내에서 동일한 명령을 지정 횟수만큼 반복하여 수행하도록 제어하는 명령문
*반복문에서 지켜야하는 규칙
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++;}
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++;
}
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);
중첩 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++;
}
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);
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("번호를 다시 입력");
}
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("번호를 다시 입력");
}
}
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가 존재하지 않음");}
}
'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 |