# 급여 계산하기 #### 질문 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 최저 시급 에러! 초과 근무시간 에러! ```
## 질문이 많네요, 그래서,, 말이 짧음. #### 질문1: 따로 동작하는거 마즘? => ㅇㅇ, 마즘 🙆‍♂️ #### 질문2: 질문이 한개인줄 알았는데, 두 개인 질문! ⓵ pay = 0.0 초기화는 왜함?, 가독성을 위해 초기화 해줌. 그냥 바로 사용해도 됨. ``` // 주급 계산 double pay = pay + basePay * hours; // 초과급 계산 ... ``` ② `+=` 연산자는 뭐임? 왼쪽 변수값에 오른쪽 결과를 더해서 넣는거임 ``` double a = 7; a += 3; // a = a + 3; 과 같음 System.out.println(a); // 10 ``` #### 질문3: 안알랴줌 😛 (어디가 어떻게 에러가 나는지, 예상한 결과는 무엇이고 무엇이 다른지 알려주삼)
+= 연산자는 뭐임? -> 이건 아는데, 기본급여 구하려면 그냥 최저시급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; 둘다 답이 똑같이 나올줄 알았는데 계산순서가 달라지면 답이 달라지는게 이해가 안돼여ㅠ
#### 질문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달러 ``` 수식과 코드, 어디서 다른걸까 찾아보기..! 👻