# 급여 계산하기
#### 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의 역할을 잘 모르겠습니다..
sehongpark님의 답변
# return의 역할
return은 메소드 반환 값을 결정합니다. 그 뿐 아니라, 메소드를 중간에서 종료 시키기도 합니다.
## 최저시급 및 초과근무에서의 return
따라서, 정답 코드는 최저 시급과 초과 근무가 지켜지지 않은 경우, 급여를 계산하지 않고 메소드가 종료됩니다.
## 만약 return이 없다면?
만약 최저시급과 초과근무에서 return 키워드를 뺀다면,
에러 문구는 출력하되, 메소드 하단의 최종 급여까지 출력을 하게 됩니다.
## PS.
전달이 잘 되었을지 모르겠네요.
좋은 질문 감사합니다!
goodlife1359님의 답변
메소드에서 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은 최저시급 에러와 초과 근무시간 에러가 발생했을때 급여를 계산하는 부분을 실행하지 않고 메소드를 종료시키기 위해 사용되었습니다.