# 급여 계산하기 #### CODE <a class='btn btn-default' href='/codes/26156'>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.00) { System.out.println("최저 시급 에러!"); return; } if (hours > 60) { System.out.printf("초과 근무시간 에러!"); return; } if (hours > 40) { int extra = hours - 40; pay += extra * basePay * 1.5; hours -= extra; } pay += basePay * hours; System.out.printf("$ %.2f\n", pay); } } ``` #### INPUT ``` ``` #### OUPUT ``` $ 400.00 $ 550.00 최저 시급 에러! 초과 근무시간 에러! ``` 문제 코드에서 최저시급과 초과 근무시간 if 문에서 return이 없으면 어떻게 되는건가요?? 두 if문에서 return의 역할을 잘 모르겠습니다..
# return의 역할 return은 메소드 반환 값을 결정합니다. 그 뿐 아니라, 메소드를 중간에서 종료 시키기도 합니다. ## 최저시급 및 초과근무에서의 return 따라서, 정답 코드는 최저 시급과 초과 근무가 지켜지지 않은 경우, 급여를 계산하지 않고 메소드가 종료됩니다. ## 만약 return이 없다면? 만약 최저시급과 초과근무에서 return 키워드를 뺀다면, 에러 문구는 출력하되, 메소드 하단의 최종 급여까지 출력을 하게 됩니다. ## PS. 전달이 잘 되었을지 모르겠네요. 좋은 질문 감사합니다!
메소드에서 return은 메소드를 호출한곳으로 값을 반환할때 사용되어집니다. 이문제에서 return은 메소드를 종료시키기 위해 사용되었습니다. printPay메소드에서 return하는 상황은 printPay(7.50, 38); 이렇게 호출된경우 if (basePay < 8.00) { System.out.println("최저 시급 에러!"); return; } basePay < 8.00 즉, 시급이 8.00보다 작을때 더이상 printPay메소드를 실행하지 않고 System.out.println("최저 시급 에러!"); 를 출력한 후에 메소드를 빠져나갑니다. 또한 printPay(8.50, 66); 이렇게 호출되는 경우 if (hours > 60) { System.out.printf("초과 근무시간 에러!"); return; } hours > 60 즉 일한시간이 60보다 클때 더이상 printPay메소드를 실행하지 않고 System.out.printf("초과 근무시간 에러!"); 를 출력한후 메소드를 빠져나갑니다. 하지만 printPay(10.00, 40); 이 호출되면 basePay 의 값도 조건에 맞고 hours 값도 조건에 맞기 때문에 최저 시급 에러 와 초과 근무시간 에러를 확인하는 조건문은 실행되지 않고 밑으로 내려와서 pay += basePay * hours; System.out.printf("$ %.2f\n", pay); 계속 연산을 수행한후 결과를 출력해주고 printPay메소드가 종료됩니다. printPay(10.00, 50); 이 호출되면 basePay 의 값도 조건에 맞고 hours 값도 조건에 맞기 때문에 최저 시급 에러 와 초과 근무시간 에러를 확인하는 조건문은 실행되지 않고 밑으로 내려와서 if (hours > 40) { int extra = hours - 40; pay += extra * basePay * 1.5; hours -= extra; } pay += basePay * hours; System.out.printf("$ %.2f\n", pay); 조건문과 연산을 수행한후 결과를 출력한 다음에 메소드가 종료됩니다. 즉, 이번 문제에서 return은 최저시급 에러와 초과 근무시간 에러가 발생했을때 급여를 계산하는 부분을 실행하지 않고 메소드를 종료시키기 위해 사용되었습니다.