Java는 다중 반환 값을 지원하지 않습니다. 그러나 때로는 여러 값을 반환해야 하는 경우도 있습니다. 이를 위해 다음 솔루션을 사용할 수 있습니다.
사례 1: 반환된 값이 모두 동일한 경우
반환해야 하는 모든 값이 동일하면 배열을 사용할 수 있습니다. 예를 들어, 두 개의 숫자가 주어졌는데, 이 숫자에 대해 더하기, 빼기, 곱하기, 나누기를 수행해야 합니다. 이러한 시나리오에서는 배열을 사용할 수 있습니다. 다음 프로그램을 관찰하세요.
개발자 모드를 비활성화하는 방법
파일 이름: ReturnMultipleValues.java
public class ReturnMultipleValues { // a method that performs basic arithmetic // operations (+, - , *, /) on number a and b public int[] performBasicArithOp(int a, int b) { int add = a + b; int substract = a - b; int multiply = a * b; int divide = a / b; int ans[] = new int[4]; ans[0] = add; ans[1] = substract; ans[2] = multiply; ans[3] = divide; return ans; } // main method public static void main(String[] argvs) { // creating an object of the class ReturnMultipleValues ReturnMultipleValues obj = new ReturnMultipleValues(); // input 1 int n1 = 6; int n2 = 3; int ans[] = obj.performBasicArithOp(n1, n2); System.out.println('The sum of numbers ' + n1 + ' and ' + n2 + ' is: ' + ans[0]); System.out.println('The difference of numbers ' + n1 + ' and ' + n2 + ' is: ' + ans[1]); System.out.println('The multiplication of numbers ' + n1 + ' and ' + n2 + ' is: ' + ans[2]); System.out.println('The division of numbers ' + n1 + ' and ' + n2 + ' is: ' + ans[3]); } }
산출:
The sum of numbers 6 and 3 is: 9 The difference of numbers 6 and 3 is: 3 The multiplication of numbers 6 and 3 is: 18 The division of numbers 6 and 3 is: 2
복잡성 분석: 프로그램은 요소의 합을 계산하기 위해 for 루프를 사용하므로 프로그램의 시간 복잡도는 O(n)입니다. 여기서 n은 배열에 있는 요소의 총 개수입니다. 프로그램의 공간복잡도는 O(1)로 일정하다.
사례 2: 서로 다른 유형의 두 값을 반환해야 하는 경우
서로 다른 유형의 두 값이 있는 경우 쌍을 사용할 수 있습니다.
파일 이름: ReturnMultipleValues1.java
// creating our own Pair Class class Pair { private final X k; private final Y v; public Pair(X k, Y v) { this.k = k; this.v = v; } public X retrieveKey() { return this.k; } public Y retrieveVal() { return this.v; } } public class ReturnMultipleValues1 { // the foo() method returns two values and // that too of different types public Pair foo() { return new Pair('JavaTpoint', 100); } // main method public static void main(String[] argvs) { // creating an object of the class ReturnMultipleValues1 ReturnMultipleValues1 obj = new ReturnMultipleValues1(); Pair p = obj.foo(); System.out.println(p.retrieveKey() + ' ' + p.retrieveVal()); } }
산출:
JavaTpoint 100
사례 3: 다양한 유형의 더 많은 값을 반환해야 하는 경우
이 경우 클래스를 사용할 수 있습니다. 다음 프로그램을 관찰하세요.
base64 자바스크립트 디코딩
파일 이름: ArithmeticOperation.java
class ArithmeticOperation { int m; // for storing multiplication double d; // for storing division int a; // for storing addition String s; // constructor of the class ArithmeticOperation(int mul, double div, int add, String str) { m = mul; d = div; a = add; s = str; } } public class ReturnMultipleValues2 { public ArithmeticOperation getMultDivAdd(int n1, int n2) { // creating and returning object of ArithmeticOperation that contains multiple values return new ArithmeticOperation(n1 * n2, (double)n1 / n2, n1 + n2, 'Performing Arithmetic Operation'); } // main method public static void main(String[] argvs) { int n1 = 29; int n2 = 20; // creating an object of the class ArithmeticOperation ArithmeticOperation obj = (new ReturnMultipleValues2()).getMultDivAdd(n1, n2); System.out.println('Statement: ' + obj.s); System.out.println('The Multiplication of the numbers ' + n1 + ' and ' + n2 + ' is: ' + obj.m); System.out.println('The Division of the numbers ' + n1 + ' and ' + n2 + ' is: ' + obj.d); System.out.println('The Addition of the numbers ' + n1 + ' and ' + n2 + ' is: ' + obj.a); } }
산출:
Statement: Performing Arithmetic Operation The Multiplication of the numbers 29 and 20 is: 580 The Division of the numbers 29 and 20 is: 1.45 The Addition of the numbers 29 and 20 is: 49