import java.util.Scanner;
public class FMain4 {
public static void takeMoney() {
Scanner sc = new Scanner(System.in);
System.out.println("엄마가 준 돈:");
int money = sc.nextInt();
System.out.printf("엄마가 %d원을 주셨다!\n", money);
System.out.println("----------------");}
public static void makeErrand() {
System.out.println("아들 !");
System.out.println("돈 줄테니까");
System.out.println("슈퍼가서");
System.out.println("라면이랑");
System.out.println("참치 사고");
System.out.println("남은 돈 가져와 ~");
System.out.println("------------------");}
public static void main(String[] args) {
makeErrand();
takeMoney();}}
다음과 같은 코드가 있을 떄 어떻게 출력될까요?
엄마가 주신 돈을 함수를 사용해 콘솔로 출력할 수 있습니다.
하지만 함수는 print의 동작만 할 뿐
main함수에서 엄마가 주신 돈인 money에 접근할 수 없습니다.
money에 접근하려면 어떻게 해야할까요?
이럴때 바로 return 기능을 사용해야 합니다.
return 문을 코드 밑에 줄에 추가하여
변수를 다른 함수로 내보낼 수 있는데
이때 형식은 return 변수; 입니다.
값을 반환하기 떄문에
값이 없이 기능만 하던 void 자료형을
int로 바꿔줘야 합니다.
여기서 void의 뜻은 return할 값이 없다는
의미를 가지고 있습니다.
public static int takeMoney() {
Scanner sc = new Scanner(System.in);
System.out.println("엄마가 준 돈:");
int money = sc.nextInt();
System.out.printf("엄마가 %d원을 주셨다!\n", money);
System.out.println("----------------");
return money;
}
이렇게 하면 main 함수에서
반환되는 값을 변수에 넣어서
값에 접근할 수 있습니다.
public static void main(String[] args) {
makeErrand();
int money = takeMoney();}
함수를 하나 더 만들겠습니다.
public static void doErrand(int money) {
int ramen = 3200;
int tuna = 2170;
int snack = 1500;
System.out.printf("심부름하면 %d원이 남네...ㅎ\n",money - ramen - tuna - snack);
System.out.println("------------------");}
위 함수에서는 어머니가 주신 돈의 값이 필요합니다.
따라서 메인 함수에서 파라미터로 받아옵니다.
doErrand(money);
이렇게 하면 takeMoney 함수에서 가져온
money 값을 이용해서 함수를 실행하게 됩니다.
이렇게 해서 return으로 반환한 money 값을 메인함수에서
다른 함수로 파라미터로 넘겨서 사용할 수 있다는 것을
알게되었습니다.
함수를 왜 사용해야 할까요?
1. 보기 편하다. (가독성)
2. 오류 발견하기 편하다.
3. 메인 함수에 다 넣기 보다는 기능을 나눌 수 있음.
4. 다른 클래스에서 사용하기 위해서 사용한다.
※ main함수에서 코드를 최대한 짧게 구성하기 위해서
기능들을 묶어서 함수라는걸로 사용합니다.
즉, 기능을 나눠서 효율적으로 사용하기 위함입니다.
따라서 함수는 그 어떤 기능보다 많이 사용되기 떄문에
구현하는 방법을 완벽히 숙지해야겠다는 생각이 들었습니다.
읽어주셔서 감사합니다!
'Java > 이론' 카테고리의 다른 글
[Java] 함수의 종류 (0) | 2024.11.25 |
---|---|
[Java] 오버로딩 (Overloading) (0) | 2024.11.22 |
[Java] 함수 (Function) (0) | 2024.11.22 |
[Java] Random 기능 (0) | 2024.11.22 |
[Java] 삼항 연산자 (6) | 2024.11.22 |