(Q) KH 여행사는 '무조건 1명 1박에 10만원'이라는 슬로건으로 영업을 하고 있습니다.
추가로 여름 여행객을 유치하기 위해 다음과 같은 이벤트를 하기로 결정했습니다.
-여름(6,7,8월)에 여행가는 사람은 무조건 이용요금 25% 할인
다음 정보가 주어졌을 때 예상 경비를 계산하여 출력하도록 프로그래밍 하세요
1.인원수(명)
2.여행기간(월)
3.여행계획중인 달(1월~12월 사이)
package day03;
import java.lang.*;
public class Day03_condition_Test07 {
public static void main(String[] args) {
int pricePerPeopleSpan = 100000;
int discount = 25;
int people = 1, travelSpan = 1, travelMonth = 8;
boolean discountTF = travelMonth == 6 || travelMonth == 8 || travelMonth == 8;
int price;
if(discountTF) {
price = pricePerPeopleSpan * people * (100 - discount) / 100;
}
else {
price = pricePerPeopleSpan * people;
}
System.out.println("예상 총 경비는 " + price + "원 입니다");
}
}
1) if의 조건부에는 boolean의 변수만 써도 상관없다
- if(discountTF) {}에서 조건부는 'discountTF == true'를 의미한다
2) 할인율을 적용할 때 할인율의 100의 보수를 이용한다
3) if문 앞에 변수를 선언하면 각 조건마다 변수의 값을 설정할 수 있다
- ★ 출력에 대한 중복 코드를 제거할 수있다 (각 경우에 대해서 System.out을 쓸 필요가 없다)
int price;
if(discountTF) {
price = pricePerPeopleSpan * people * (100 - discount) / 100;
}
else {
price = pricePerPeopleSpan * people;
}
4) 6, 7, 8월은 3으로 나눌 때 몫이 2인 달이다 (★)
- 3, 4, 5월을 봄 / 6, 7, 8월을 여름 / 9, 10, 11월을 가을 / 12, 1, 2월을 겨울이라 할 때 이를 구분짓는 방법
- 나눗셈의 몫을 이용한다
if(month / 3 == 1) {
System.out.println("봄");
}
else if(month / 3 == 2) {
System.out.println("여름");
}
else if(month / 3 == 3) {
System.out.println("가을");
}
else {
System.out.println("겨울);
]
** 나눗셈 연산의 응용
- 나눗셈의 몫을 이용하는 연산
- 나눗셈의 나머지를 이용하는 연산 (모듈러 산술)
** 문제점
공학용 계산기로 무언가를 계산을 할 때 계산의 범위를 구분짓기 위해 위해 괄호를 엄청 넣었었다.
하지만 할인율을 적용할 때 다음과 같이 쓰면 0이 나왔던 이유??
int price;
if(discountTF) {
price = pricePerPeopleSpan * people * ((100 - discount) / 100);
}
else {
price = pricePerPeopleSpan * people;
}
- '(100 - discount) / 100'의 결과가 0이 나왔기 때문에 0이 나왔던 것 같다
i) price 변수를 double로 선언한 후 discount를 double로 형변환 시켜보니 올바른 출력이 나왔다
double price1 = (pricePerCountSpan * travelCount * travelSpan) * ((100 - (double)discount) / 100);
ii) price 변수를 double로 선언한 후 할인율에 대한 식 앞에 double로 형 변환을 시켜도 결과가 나왔다.
double price;
if(discountTF) {
price = pricePerPeopleSpan * people * (double)((100 - discount) / 100);
}
else {
price = pricePerPeopleSpan * people;
}
'국비교육 > 국비교육 복습' 카테고리의 다른 글
Day04_condition_Test10 : 글 작성후 흐른 시간 표시 + 시간을 4자리 정수로 표시하는 방법 (★) (0) | 2022.07.31 |
---|---|
Day03_condition_Test09 : else if가 포함된 조건문 + 조건의 범위 (★) (0) | 2022.07.31 |
Day03_condition_Test06 : 과속 단속 카메라 (나누기 연산의 몫 활용) (0) | 2022.07.31 |
Day03_condition_Test05 : if ~ else 조건문 + 할인율 적용 (★) (0) | 2022.07.31 |
Day03_condition_Test04 : if ~ else 조건문 (논리 연산자 &&와 ||) (0) | 2022.07.31 |