# 급여 계산하기
#### 질문 1. < if문만 여러번 사용할 때>
if- else if 를 사용하는 경우 하나의 조건이 만족 되면 나머지 else if 부분은 수행되지 않음
if - if 로 사용하게 되면 각각 다른 조건 문으로 해석되어 각각 수행하게 됨
-> if문만 쓰일 경우 이러한 목적으로 수행되는 게 맞나요??
#### 질문2.
기본급여랑 초과급여 구하는데 왜 pay값을 초기화하며,
그냥 =식이 아니라 +=를 사용하는지 이해가 잘 안됩니다.
```
double pay = 0.0;
pay = pay + basePay * hours;
pay = pay + basePay * extraHours * 1.5;
```
#### 질문3.
-> 기본급여랑 초과 급여 계산 순서가 바뀌면 왜 오류가 나는지 잘 모르겠습니다.
```
double pay = 0.0;
// 주급 계산
pay = pay + basePay * hours;
// 초과 급여 계산
if (hours > 40) {
int extraHours = hours - 40; // 초과 시간
pay = pay + basePay * extraHours * 1.5; // 초과 급여
hours = hours - extraHours; // 초과 시간 제거
```
#### CODE <a class='btn btn-default' href='/codes/63464'>Link</a>
```
public class JavaCafe {
public static void main(String[] args) {
printPay(10.00, 40);
printPay(10.00, 50);
printPay(7.50, 38);
printPay(8.50, 66);
}
// 시급과 일한 시간을 입력받아, 주급을 출력
public static void printPay(double basePay, int hours) {
// 최저 시급 체크
if (basePay < 8.00) {
System.out.println("최저 시급 에러!");
return;
}
// 초과 근무시간 체크
if (hours > 60) {
System.out.println("초과 근무시간 에러!");
return;
}
double pay = 0.0;
// 주급 계산
pay = pay + basePay * hours;
// 초과 급여 계산
if (hours > 40) {
int extraHours = hours - 40; // 초과 시간
pay = pay + basePay * extraHours * 1.5; // 초과 급여
hours = hours - extraHours; // 초과 시간 제거
}
// 결과 출력
System.out.printf("$ %.2f\n", pay);
}
}
```
#### INPUT
```
```
#### OUPUT
```
$ 400.00
$ 650.00
최저 시급 에러!
초과 근무시간 에러!
```
sehongpark님의 답변
## 질문이 많네요, 그래서,,
말이 짧음.
#### 질문1: 따로 동작하는거 마즘?
=> ㅇㅇ, 마즘 🙆♂️
#### 질문2: 질문이 한개인줄 알았는데, 두 개인 질문!
⓵ pay = 0.0 초기화는 왜함?,
가독성을 위해 초기화 해줌.
그냥 바로 사용해도 됨.
```
// 주급 계산
double pay = pay + basePay * hours;
// 초과급 계산
...
```
② `+=` 연산자는 뭐임?
왼쪽 변수값에 오른쪽 결과를 더해서 넣는거임
```
double a = 7;
a += 3; // a = a + 3; 과 같음
System.out.println(a); // 10
```
#### 질문3: 안알랴줌 😛
(어디가 어떻게 에러가 나는지,
예상한 결과는 무엇이고
무엇이 다른지 알려주삼)
tyk0721님의 답변
+= 연산자는 뭐임?
-> 이건 아는데, 기본급여 구하려면 그냥 최저시급x일한시간 아닌가해서요.
double pay = basePay * hours; 이렇게 하면 틀린식인가요?
초과급여도 마찬가지로 pay = basePay * extraHours *1.5; 그냥 이렇게 하면 안되나요?
질문3.
-> // 주급 계산
pay = pay + basePay * hours;
// 초과 급여 계산
if (hours > 40) {
int extraHours = hours - 40; // 초과 시간
pay = pay + basePay * extraHours * 1.5; // 초과 급여
hours = hours - extraHours; // 초과 시간 제거
}
-> // 초과 급여 계산
if (hours > 40) {
int extraHours = hours - 40; // 초과 시간
pay = pay + basePay * extraHours * 1.5; // 초과 급여
hours = hours - extraHours; // 초과 시간 제거
// 주급 계산
pay = pay + basePay * hours;
둘다 답이 똑같이 나올줄 알았는데 계산순서가 달라지면 답이 달라지는게 이해가 안돼여ㅠ
sehongpark님의 답변
#### 질문2: 10달러 50시간일하면 얼마?
총 급여는 기본 급여에 초과 급여의 합
```
총 급여 = 기본 급여 + 기본 급여
```
총 50시간 중, 기본 급여는 40시간
따라서 기본 급여는 400달러!
```
기본 급여 = 시급 x 일한시간
= 10달러 x 40시간
= 400달러
```
여기에 초과한 시간 10시간에 대해서는
1.5배로 받음
```
추가 급여 = 시급 x 추가시간 x 1.5배
= 10달러 x 10시간 x 1.5배
= 150달러
```
따라서 총 급여는 550달러
```
총 급여 = 400달러 + 150달러
= 550달러
```
수식과 코드,
어디서 다른걸까 찾아보기..! 👻