# 급여 계산하기 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 최저 시급 에러! 초과 근무시간 에러! ```
## 네 맞습니다 앞서 if 문에서 계산한 결과를 새롭게 초기화하여 생기는 문제입니다 코드의 흐름을 따라 변수의 값이 어떻게 변해가는지를 그림으로 그려가며 연습해보라능
오호.. 한번더 생각해봐야겠군요 감사합니당 ^__^