Java אינה תומכת במספר ערכי החזרה. עם זאת, לפעמים נדרש להחזיר מספר ערכים. לשם כך, נוכל להשתמש בפתרונות הבאים.
מקרה 1: אם כל הערכים המוחזרים זהים
אם כל הערכים שיש להחזיר זהים, אז נוכל להשתמש במערך. לדוגמה, ניתנים שני מספרים, ונדרש לבצע את החיבור, החיסור, הכפל והחילוק על המספרים הללו. בתרחיש כזה, נוכל להשתמש במערך. שימו לב לתוכנית הבאה.
פקודת arp
שם קובץ: 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: אם עלינו להחזיר שני ערכים מסוגים שונים
במקרה שיש לנו את שני הערכים מהסוגים השונים, נוכל להשתמש ב-Pair.
שם קובץ: 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: אם נצטרך להחזיר עוד ערכים מסוגים שונים
במקרה כזה, נוכל להשתמש בכיתה. שימו לב לתוכנית הבאה.
מאגר מידע
שם קובץ: 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