2021. 1. 14. 20:20ㆍDev.Program/Java & Spring
======== Ex.java 만들기
p.122
< switch ~ case 문 >
- if문과 유사하게 조건에 따른 실행 문장을 달리하는 조건문
- if문과 달리 조건식이 정수값, 문자열, Enum 상수 중 하나의 결과가 와야한다.
- case 문에는 조건식 판별 결과와 비교할 값을 사용하며 범위 지정이 불가능하고, 값만 사용 가능
- ⇒ 조건식 결과와 일치하는 case 문의 : 뒤에 있는 문장들을 차례대로 실행
- case 문의 값은 중복될 수 없으며, 순서는 상관 없다
- case 문 실행 후 break 문을 사용하여 switch ~ case 문을 빠져나갈 수 있으며, break 문이 없을 경우에는 조건과 상관없이 다음 case 문 또는 default 문을 모두 실행함(break 문을 만나거나 switch ~ case 문이 끝날때까지 실행)
- default 문은 if 문의 else 문과 동일한 역할을 수행하며 일치하는 case 문이 없을 경우 default 문을 실행(default 문은 생략 가능)
- if문은 실행 시점에서 조건을 판별하여 실행할 문장이 결정되지만, switch ~ case 문은 번역 시점에 실행할 문장이 결정되므로 실행 속도가 if문보다 빠름
- if문이 switch ~ case 문보다 유연하므로 switch ~ case 문은 if문으로 100% 전환이 가능하지만 if문은 switch ~ case 문으로 전환이 불가능할 수 있다.
< 기본 문법 >
switch(조건식) {
case 값1 :
// 조건식 결과가 값1 과 일치할 경우 실행할 문장들...
[break;]
case 값n :
// 조건식 결과가 값n 과 일치할 경우 실행할 문장들...
[break;]
[default : // 일치하는 case 문이 없을 경우 실행할 문장들... ]
}
- break가 없어서 뒤 끝까지 다 실행됨.
- switch 까지 적고 Ctrl + Space 하면 이렇게 자동완성 됨.
- ( ) 안에 값 넣고 tab 키 누르면 이런식으로 value 값으로 이동됨.
======== Test.java
문제 )
등급을 정수형 변수로 관리하여
해당 등급에 따른 할인 금액을 계산
- 등급 : 1(일반 회원), 2(VIP 회원), 3(VVIP 회원)
- 할인율 : 일반 회원(5%), VIP 회원(15%), VVIP 회원(30%)
int grade = 3;
int pee = 50000;
> if 문을 사용하여 등급에 따른 할인율 적용하여 결제 금액 계산 후 출력
문제 ) switch ~ case 문을 사용하여 위와 동일한 작업 수행
모르게따….
======== Ex2.java
학점 계산하기. 를 switch ~ case 로 만들기.
========Ttest2.java
문제 ) switch 조건식에 연산식이 들어갈 수 있는 걸 활용해서 더 간단하게 만들기.
- 어차피 break 가 없으면 전부 돌 테니까! (case0~case5 는 같은 결과값)
- ⇒ 문장이 더 짧아진다ㅎㅎ
> 100이 넘어가면 case 10 이 오류가 나므로 그 부분은 if 문 사용
- 이렇게까지 짧아질 수 있다! 109 점, 108 점 이렇게 100점이 넘어가도 오류 안뜸!
======== Ex3.java
p.127
< 반복(loop)문 >
- 특정 조건에 따라 문장 또는 블럭을 반복 실행하는 문
- for문, while문 으로 구분됨
- ⇒ for문은 주로 반복횟수가 정해져 있는 반복문에 사용되며, while문은 주로 반복횟수가 정해져 있지 않은 반복문에 사용됨
- 초기식, 조건식, 증감식, 실행문(블록)으로 구성됨
1. for문
- 초기식, 조건식, 증감식의 위치가 정해져 있는 반복문(초심자에게 유리)
< 기본 문법 >
for(초기식; 조건식; 증감식) {
// 조건식 결과가 true 일 때 반복 실행할 문장들...
}
======== Test3.java
문제 ) 구구단 출력
정수형 변수 dan 이 2 일 경우 구구단 2단 출력
문제 ) 이 문장을 for문을 사용하여 구구단 출력
- 근데 정석대로 풀기
- 이렇게 풀 경우 차이점! 종료 후 i 값이 10이 됨. (디버깅)
⇒ 디버깅은 프로그램 실행 시 문제를 일으키는 오류, 즉 '버그'를 찾아 해결하고 수정하는 것을 의미합니다.
======= Ex4.java
p.127~
< 반복문을 사용한 연산의 누적 >
- 연산(합계 등)을 누적할 변수를 하나 선언하여 반복문 내에서 해당 변수에 특정 연산 결과를 누적하여 적용
- ⇒ 주의사항!
- 누적 변수를 선언하는 위치는 반드시 반복문보다 윗쪽(앞쪽)에 위치해야한다!
- 또한, 반드시 초기화 필수!
문제 ) 주석 처리된 부분을 for문으로 만들기.
- 주의사항 ! 누적 연산 할 때는 누적변수는 안쪽에 만들면 안됨. 그럼 for 문이 돌아갈 때마다 0으로 초기화되어 마지막 10만 더해지기 때문에 결과값이 10이 나옴.
- 누적 선언 변수는 무조건 반복문보다 위쪽(앞쪽)에 위치해야함.
======== Test4.java
문제 ) 정수 num 의 값이 1 ~ 10 까지 1씩 증가하면서 합계(total)를 누적 계산(안보고 해보기)
응용문제 )
정수 i 의 값이 1 ~ 10 까지 1씩 증가하면서 홀수합계(oddTotal)를 계산
정수 i 의 값이 1 ~ 10 까지 1씩 증가하면서 짝수합계(evenTotal)를 계산
Test.java
문제 )
정수 1 ~ 100 사이에서 입력받은 두 숫자(num1, num2)의 공배수를 출력하고 합계 계산
ex) num1 = 5, num2 = 10 일 때
공배수 : 10, 20, 30, 40, 50, 60, 70, 80, 90, 100
합계 : 550
Ex2.java 만들기
p.129
< 중첩 for문 >
- for문 내부에 또 다른 for문을 기술하는 것
- 특정 작업의 반복에 대해서 다시 반복을 적용하여 중첩 반복을 수행할 때 사용
- ex) 시계의 분 & 초 를 표현하거나, 200m 트랙을 10바퀴 도는 것
- 중첩 for문 중에서 바깥쪽에 기술된 for문을 바깥쪽 for문이라고 하고, 안쪽에 기술된 for문을 안쪽 for문이라고 한다.
- ⇒ 이 때, 안쪽 for문의 반복 횟수가 바깥쪽 for문 반복 횟수보다 많다.
- (안쪽 for문 반복 횟수 = 안쪽 for문 반복 횟수 * 바깥쪽 for문 반복 횟수)
< 기본 문법 >
for(초기식1; 조건식1; 증감식1) {
문장1; // 바깥쪽 for문 반복 횟수만큼 반복
for(초기식2; 조건식2; 증감식2) {
문장2;
// 안쪽 for문 반복횟수만큼 반복 * 바깥쪽 for문 반복횟수만큼 반복
}
문장3; // 바깥쪽 for문 반복 횟수만큼 반복
}
< 실행 순서 >
초기식1 → 조건식1(true 일 때) → 문장1 → 초기식2 → 조건식2(true 일 때) → 문장2 → 증감식2 → 조건식2(반복) → 조건식2(false 일 때) → 문장3 → 증감식1 → 조건식1(반복)
======== Test2.java
문제 ) 중첩 for 문을 사용한 시계의 분(min)침과 초(sec)침 구현
문제 ) 중첩 for문을 사용하여 구구단 2단 ~ 9단까지 모두 출력
======== Ex3.java 만들기
문제 ) 중첩 for문에서 연산의 누적
주사위 2개 조합 경우의 수 출력 후 주사위 2개의 눈금 합계 계산
======== Test3.java 만들기
문제 ) 2개의 주사위를 던졌을 때 눈금의 합이 6이 되는 경우의 수 모두 출력
문제 ) 방정식 2x + 4y = 10의 모든 해를 구하시오.
단, x와 y는 정수이고 각각의 범위는 0 <= x <= 10, 0 <= y <= 10 이다.
'Dev.Program > Java & Spring' 카테고리의 다른 글
[Java] 배열 (0) | 2021.01.19 |
---|---|
[Java] while문 / do~while문 / break / continue (0) | 2021.01.19 |
[Java] 조건문 / if문 / if~else문 / 중첩if문 (0) | 2021.01.14 |
[Java] 삼항연산자 / 논리연산자 / 쉬프트연산자 (0) | 2021.01.14 |
[Java] 연산자 (0) | 2021.01.12 |