2021.10.20(수)
🌱 반복문
- while문
- 예시들을 개념과 대비해서 잘 보자
- 무작위(random) 수까지의 합 구하기
/* while문: 또 다른 종류의 반복문
*
* 표현법
* 초기식; // 필수는 아님
* while(조건식) {
* (조건식이 true일 때) 반복적으로 실행할 코드; // a
* 증감식; // 필수는 아님
* }
*
* 괄호 안의 조건식이 true일 경우 해당 구문(a)을 반복적으로 실행
* while(true): 무조건 반복시킴 -> 무한반복
*/
public void method1() { // method1 영역 시작
// i가 1~5일 때 인사하기: 구현 방법은 다수
// 초기식
// 제어변수 i, j, k
// 방법1)
System.out.println("[방법1]");
int i = 0;
while (/*조건식*/ i < 5) {
// i++; // 문법에 틀린 건 아니지만, 논리적 오류; 증감식의 순서를 잘못 써서 "2~6번째 안녕" 출력 -> 맞는 사용 예는 방법2 참조
System.out.println(++i + "번째 안녕하세요");
// i++;
}
// 방법2)
System.out.println("[방법2]");
int k = 0;
while (k < 5) {
k++;
System.out.println(k + "번째 안녕하세요");
}
// 방법3)
System.out.println("[방법3]");
int l = 1;
while (l <= 5) {
System.out.println(l++ + "번째 안녕하세요"); // 후위연산자로 증감식 쓴 경우, 출력(처리)한 뒤 i값 1 증가시킴
}
// 방법4)
System.out.println("[방법4]");
int j = 1;
while (j <= 5) {
System.out.println(j + "번째 안녕하세요");
j++;
}
int b = 10;
while (b >= 6) {
System.out.println(b + "(으)로 줄어든다...");
b--;
}
int c = 1;
while (c < 10) {
System.out.println("다섯번만 나올거야~ (제어변수 c = " + c + ")");
c += 2; // 증감식 c = c + 2-> c = 1 3 5 7 9 (11 되며 while문 탈출)
}
} // method1 영역 끝
public void methodSum() { // methodSum 영역 시작
int i = 1; // 초기식
int sum = 0; // 합계를 계산해서 담아둘 변수
while (i <= 100) { // i < 101
sum += i;
i++; // 증감식
}
System.out.println("1~100 사이의 자연수의 합 : " + sum);
} // methodSum 영역 끝
public void method2() { // method2 영역 시작
// while문(만) 써서 1~100 사이의 짝수만 더하기
int i = 1; // 초기식
int sum = 0; // 합계를 계산해서 담아둘 변수
while (i <= 100) { // i < 101
// 짝수일 때만 더하기
if (i % 2 == 0) {
sum += i; // sum = sum + i;
}
i++; // 증감식
}
System.out.println("1~100 사이의 짝수의 합 : " + sum);
} // method2 영역 끝
- do-while문
- for문, while문만큼 예제를 많이 안 봐서 덜 익숙하니까, 복습 시 연습 더 하자!
/* do-while문
* 별도의 조건 검사 없이 무조건 1회는 실행
* 조건이 맞지 않더라도 1회는 실행
* while(false) -> 1회는 실행
*
* 표현법
* do {
* System.out.println("한 번 해봐~");
* 증감식; // 필수 아님
* } while (조건식);
*
* while과 do-while 차이점
* while문은 처음 수행할 때도 조건식 검사 후 true여야 실행
* vs do-while문은 첫 실행은 별도의 조건검사 없이 무조건 1번 실행(일단 해 봐)
*/
public void method1() {
// 애초에 조건이 맞지 않아도 1번은 실행
int num = 1; // 초기식
do {
System.out.println("무조건 한 번 해봐~"); // 일단 do 안의 내용 먼저 실행
} while(num == 0); // 조건식 확인 결과 false인 바, 해당 do-while문 종료
// 조건식 확인 결과가 true이면, do 안의 내용 무한반복됨
}
🌱 분기문
- break
/* break; ((반복문 또는 switch문) 멈춰)
* break문을 만나는 순간 '가장 가까운 반복문'을 빠져나감; 해당 break문이 속해있는 반복문 1겹만 빠져나감
*
* 주의할 점: switch문 안의 break;와 다른 개념; switch문 안의 break는 해당 switch를 빠져나가는 용도일 뿐임
*
* return은 메소드를 빠져나가는 것; 호출한 곳으로 돌아감
*/
public void method1() { // method1 영역 시작
// 매번 반복적으로 새롭게 발생되는 랜덤값(1~100) "무한하게(for 또는 while)" 출력
// 방법1) for( ; ; )
// 방법2) while(true)
// 그 랜덤값이 홀수일 경우(=조건 -> 조건문 사용) 반복문을 빠져나가게 할 것
// 방법1)
for ( ; ;) { // 랜덤값이 홀수일 때까지 무한 반복
int random = (int)(Math.random() * 100) + 1;
// Math.random() = 0.00 ~ 0.99999
// Math.random() * 100 = 0.00 ~ 99.9999
// (int)(Math.random() * 100) = 0 ~ 99
// (int)(Math.random() * 100) + 1 = 1 ~ 100
if (random % 2 == 1) {
System.out.println("프로그램을 종료합니다(random : " + random + ")");
break; // 가장 가까운 반복문(여기서는 for문)을 빠져나감
} else {
System.out.println("random : " + random); // 결과물 수 = 홀수 random 값 나오기/if문 조건식 걸리기 전 for문이 돈 횟수
}
}
// 방법2)
while (true) {
int random = (int)(Math.random() * 100) + 1;
if (random % 2 == 1) {
System.out.println("프로그램을 종료합니다(random : " + random + ")");
break; // 가장 가까운 반복문(여기서는 while문)을 빠져나감
} else {
System.out.println("random : " + random); // 결과물 수 = 홀수 random 값 나오기/if문 조건식 걸리기 전 while문이 돈 횟수
}
}
} // method1 영역 끝
- continue
/* continue : 반복문 안에서 쓰이는 구문; 분기문(탈출문), break의 친구
* continue를 만나면 그 뒤에 어떤 구문이 있든간에 실행하지 않고 pass -> 가장 가까운 반복문(증감식 부분)으로 돌아가라는 의미
*/
📗 소감
- 반복문의 기본 구조, 분기문의 기본 정의 등 기본 개념을 잘 알아두자 + 개념을 꼼꼼히 적용해서 코드를 작성하자
- 숙제는 쉽지 않지만, 단계별로 로직을 생각하고 코드로 작성해가는 것이 재미있다!
📗 homework: 제어문
- 연산자와 정수 2개를 입력받고, 입력된 연산자에 따라 알맞은 결과를 출력
- 단, 해당 프로그램은 연산자 입력에 "exit"라는 값이 입력될 때까지 무한 반복하며, "exit"가 입력되면 "프로그램을 종료합니다" 출력하고 종료
- 또한 연산자가 나누기이면서 두 번째 정수가 0으로 들어오면 "0으로 나눌 수 없습니다. 다시 입력해 주세요"를 출력 + 처음으로 돌아가 사용자가 다시 연산자부터 입력하도록 함
- 없는 연산자가 들어올 때 "없는 연산자입니다. 다시 입력해주세요"를 출력 + 처음으로 돌아가 사용자가 다시 연산자부터 입력하도록 함
- 공차(숫자들 사이에서 일정한 숫자의 차가 존재하는 것) 만들기: 사용자로부터 시작 숫자와 공차를 입력받아 일정한 값으로 숫자가 커지거나 작아지는 프로그램 구현하기; 단, 출력되는 숫자는 총 10개
'back-end dev > Java' 카테고리의 다른 글
[KH정보교육원] 9일차_배열 복사, 객체 (0) | 2021.11.07 |
---|---|
[KH정보교육원] 8일차_배열 (0) | 2021.11.07 |
[KH정보교육원] 6일차_조건문 (0) | 2021.11.07 |
[KH정보교육원] 5일차_조건문 (0) | 2021.11.07 |
[KH정보교육원] 4일차_강제형변환, 연산자 (0) | 2021.11.07 |