# 급여 계산하기
pay = basePay * hours;이 값이
```
if (hours > 40){
int extraHours = hours - 40;
pay = basePay * hours; //기본 급여
pay += basePay * 1.5 * extraHours; //더하기 초과급여
pay -= basePay * extraHours; // 빼기 잘못계산된 급여
}
pay = basePay * hours;
```
이렇게 아래로 내려가면 두번째줄 출력이 500$가 되는이유가 대충 if문에서 pay값을 막 계산해놨는데 pay값이 다시 재정의 되어서 그런게 맞을까요? 구글링으로도 뭐라고 검색해야 할지 모르겠어서 질문남깁니다.
#### CODE <a class='btn btn-default' href='/codes/80404'>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) {
double pay = 0.0;
if(basePay < 8.0){
System.out.println("최저 시급 에러!");
return;
}
if (hours > 60){
System.out.println("초과 근무시간 에러!");
return;
}
pay = basePay * hours;
if (hours > 40){
int extraHours = hours - 40;
pay = basePay * hours; //기본 급여
pay += basePay * 1.5 * extraHours; //더하기 초과급여
pay -= basePay * extraHours; // 빼기 잘못계산된 급여
}
System.out.printf("$ %.2f\n", pay);
}
}
```
#### INPUT
```
```
#### OUPUT
```
$ 400.00
$ 550.00
최저 시급 에러!
초과 근무시간 에러!
```
sehongpark님의 답변
## 네 맞습니다
앞서 if 문에서 계산한 결과를
새롭게 초기화하여 생기는 문제입니다
코드의 흐름을 따라
변수의 값이 어떻게 변해가는지를
그림으로 그려가며 연습해보라능
tichu_be님의 답변
오호.. 한번더 생각해봐야겠군요 감사합니당 ^__^