Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 메소드 호출을 다른 메소드의 인수로 전달하는 방법

개요

이 글에서는 자바(Java)에서 메소드 호출을 다른 메소드의 인수로 전달하는 방법을 알아봅니다. 한 클래스 내부에서 다른 클래스의 객체를 생성하기만 하면 해당 클래스의 메소드를 호출할 수 있으며, 객체를 만든 후에는 객체 참조 변수를 이용해 원하는 메소드를 호출하면 됩니다.

핵심 아이디어는 간단합니다. 어떤 메소드의 반환값을 별도의 변수에 저장하지 않고, 곧바로 다른 메소드 호출의 괄호 안에 넣어 인수로 전달하는 것입니다.

아래 예시를 통해 확인해 보겠습니다.

입력 예시

두 개의 숫자 입력: 2와 3

출력 결과

두 숫자의 합의 세제곱은:
125

알고리즘

  1. 프로그램을 시작합니다.
  2. my_input_1, my_input_2 두 개의 변수를 선언합니다.
  3. 두 숫자를 매개변수로 받아 그 합을 반환하는 함수를 정의합니다.
  4. 인수 하나를 받아 세 번 곱한(세제곱한) 값을 반환하는 또 다른 함수를 정의합니다.
  5. main 함수에서 클래스의 객체를 새로 생성하고 Scanner 객체를 만듭니다.
  6. 숫자를 코드에 미리 지정하거나, 사용자에게 직접 입력받을 수 있습니다.
  7. 입력값이 준비되면 합을 구하는 함수를 먼저 호출하고, 그 결과를 세제곱 함수의 인수로 전달합니다.
  8. 최종 결과를 콘솔에 출력합니다.

예제 1: 사용자 입력으로 실행하기

다음 예제는 프롬프트를 통해 사용자가 직접 값을 입력하는 방식입니다. 주목할 부분은 마지막 줄의 obj.my_cube(obj.my_sum(my_input_1, my_input_2)) 입니다. my_sum()의 반환값이 별도의 변수에 저장되지 않고 my_cube()의 인수로 바로 전달되는 것을 확인할 수 있습니다.

import java.util.Scanner;
public class Main {
   public int my_sum(int a, int b) {
      int sum = a + b;
      return sum;
   }
   public void my_cube(int my_input) {
      int my_result = my_input * my_input * my_input;
      System.out.println(my_result);
   }
   public static void main(String[] args) {
      Main obj = new Main();
      int my_input_1, my_input_2;
      System.out.println("Required packages have been imported");
      Scanner my_scanner = new Scanner(System.in);
      System.out.println("A reader object has been defined ");
      System.out.print("Enter the first number : ");
      my_input_1 = my_scanner.nextInt();
      System.out.print("Enter the second number : ");
      my_input_2 = my_scanner.nextInt();
      System.out.println("The cube of the sum of two numbers is: ");
      obj.my_cube(obj.my_sum(my_input_1, my_input_2));
   }
}

출력

Required packages have been imported
A reader object has been defined
Enter the first number : 2
Enter the second number : 3
The cube of the sum of two numbers is:
125

예제 2: 값 미리 정의해서 실행하기

다음 예제는 정수값을 코드 안에서 미리 정의하고, 콘솔에 그 값을 출력한 뒤 같은 연산을 수행하는 방식입니다. 메소드 호출 구조는 예제 1과 완전히 동일합니다.

public class Main {
   public int my_sum(int a, int b) {
      int sum = a + b;
      return sum;
   }
   public void my_cube(int my_input) {
      int my_result = my_input * my_input * my_input;
      System.out.println(my_result);
   }
   public static void main(String[] args) {
      Main obj = new Main();
      int my_input_1, my_input_2;
      my_input_1 = 3;
      my_input_2 = 2;
      System.out.println("The two number is defined as " +my_input_1 +" and " +my_input_2);
      System.out.println("The cube of the sum of two numbers is: ");
      obj.my_cube(obj.my_sum(my_input_1, my_input_2));
   }
}

출력

The two number is defined as 3 and 2
The cube of the sum of two numbers is:
125

정리

이처럼 메소드의 반환값을 다른 메소드의 인수로 직접 전달하면 중간 변수 없이 코드를 간결하게 유지할 수 있습니다. 특히 위 예제처럼 한 메소드의 결과가 다음 메소드의 입력으로 이어지는 경우, 메소드 호출을 중첩하면 로직의 흐름을 한눈에 파악하기 쉽습니다. 다만 호출이 너무 깊게 중첩되면 오히려 가독성이 떨어질 수 있으므로, 상황에 맞게 적절히 활용하는 것이 좋습니다.