开发者

Getting a function to return two integers

I am writing a function and I want it two return two integers as results. However, I cannot get it to do this. Could someone help me? Here is my best shot

public static int calc (int s, int b, int c, int d, int g)
    {
        if (s==g)
  开发者_JAVA技巧          return s;
        else if (s+b==g)
                return s && b;

        else if (s + c==g)
                return s && c;

         else if (s+d==g)
                return s && d;

        else
            System.out.println("No Answer");                    
    }


You could have the method return an array of int:

public static int[] calc (int s, int b, int c, int d, int g)


Make a "pair" class and return it.

public class Pair<T,Y>
{
    public T first;
    public Y second;
    public Pair(T f, Y s)
    {
        first = f;
        second = s;
    }
}


Make a small inner class that has two integers.

private static class TwoNumbers {
    private Integer a;
    private Integer b;

    private TwoNumbers(Integer a, Integer b) {
        this.a = a;
        this.b = b;
    }
}

You create a instance of the class and return that instead.


For this specific problem, since the answer always returns s:

....
    return s;
....
    return s && b;
....
    return s && c;
....
    return s && d;
....

you could just return the 2nd value. I use 0 to indicate "just s" since the first case (if (s==g)) could be thought of as if (s+0==g). Use a different sentinel value than 0 for this, if necessary.

public static int calc (int s, int b, int c, int d, int g)
{
    if (s==g)
        return 0;
    else if (s+b==g)
            return b;
    else if (s+c==g)
            return c;
     else if (s+d==g)
            return d;
    else {
        // System.out.println("No Answer");

        // Probably better to throw or return a sentinel value of
        // some type rather than print to screen.  Which way
        // probably depends on whether "no answer" is a normal
        // possible condition.
        throw new IndexOutOfBoundsException("No Answer");
    }
}

If no exception is thrown, then s is always the first result:

try {
    int result1 = s;
    int result2 = calc(s, b, c, d, g);
} catch (IndexOutOfBoundsException ex) {
    System.out.println("No Answer");
}


package calcultor;

import java.util.*;
import java.util.Scanner;

public class Calcultor{
    
    public static void main(String args[]){
        input();
    }
    
    public static void input(){
        
        Scanner FirstNum = new Scanner(System.in);
        System.out.print("Enter the First number: ");
        int num01 = FirstNum.nextInt();
        
        Scanner secondNum = new Scanner(System.in);
        System.out.print("Enter the second number: ");
        int num02 = secondNum.nextInt();
        
        output(num01, num02);
    }
    
    public static void output(int x ,int y){
        int sum = x + y;
        System.out.println("Sum of Two Number: "+sum);
        //return sum;
    }
}


why do you want to do this? and if you have some need like this can't you change your return type to string, because in case of string you can have separator between two values which will help you in extracting values.... say 10&30 ,

I agree this is a wrong way of solving...i assumed that there is limitation of sticking to primitive datatype

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜