0

可能重复:
如何从 Java 方法返回多个对象?

假设 N= a+b; 对于数字 N,我想生成所有可能的值 a 和 b。就像如果 N =7 a 和 b 是 (1+6),(2+5),(3+4)。

我已经在一个方法中编码了这个逻辑。

static void sumofNum(int N){

        for(int a=1; a<N; a++){
                //a+b=N
                int b = N-a;
                System.out.println(a+","+b);
                int next =a+1;
                if(next==b | a==b)
                    return;
        }   
    }

我想从这个方法返回 (1,6),(2,5),(3,4)。接下来对于任何 N ,可以从此方法返回更多 (a,b) 组合。

4

4 回答 4

3

返回 a List<String>(假设"(1,6)"要存储为 a String)。使用 的一种实现List,例如ArrayList来构造列表:

static List<String> sumofNum(int N)
{
    List<String> result = new ArrayList<String>();

    for(int a=1; a<N; a++)
    {
        int b = N-a;
        result.add("(" + a + "," + b + ")");
        int next =a+1;
        if(next==b || a==b)
            return result;
    }   
    return result;
}
于 2012-09-29T07:32:36.533 回答
1

如果要将它们作为整数返回,请定义一个包含两个整数的对象(或我在下面所做的滥用点)并返回这些对象的列表。如果您定义自己的对象,只需用它替换点即可。

static ArrayList<Point> sumofNum(int N){
    ArrayList<Point> result = new ArrayList<Point>();
    for(int a=1; a<N; a++){
            //a+b=N
            int b = N-a;
        System.out.println(a+","+b);
        int next =a+1;
        if(next==b | a==b)
           result.add(new Point(a,b));
        }   
    return result;
    }

您可以通过以下方式从列表中获取结果:

results = sumofNum(7);
int a = results.get(0).x; //a = 1
int b = results.get(0).y; //b = 6
于 2012-09-29T07:44:32.667 回答
1

在面向对象(也是函数式)的编程风格中,您可以将结果传递给消费者,从而避免将结果存储在集合或列表中的开销。

例子:

static void sumofNum(int N){
  for (int a=1; a<N; a++){
    //a+b=N
    int b = N-a;
    consumer.consume(a,b);
    int next =a+1;
    if (next==b || a==b)
      return;
    }   
}

[ 代码的进一步改进是可能的(例如,避免内部 if 和 return),... ]

于 2012-09-29T09:16:27.877 回答
0
Consider the nos as (1,6),(2,5),(3,4)

-现在返回一个ArrayList<String>包含String“1,6”、“2,5”、“3,4”形式的每个值。

-当您收到返回的ArrayList,然后使用split()方法","作为分隔符从“1,6”中取出 1 和 6 等等....

于 2012-09-29T07:39:32.087 回答