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 を返します( が aとして格納されるとList<String>仮定します)。などの の実装の 1 つを使用して、リストを作成します。"(1,6)"StringListArrayList

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

それらを int として返したい場合は、2 つの int (または以下で行ったように誤用ポイント) を含むオブジェクトを定義し、それらのオブジェクトのリストを返します。独自のオブジェクトを定義する場合は、ポイントをそれに置き換えてください。

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)

- "1,6"、"2,5"、"3,4" の形式ArrayList<String>で各値を含む を返すようになりました。String

-返された を受け取ったら、メソッドを区切り文字としてArrayList使用して、「1,6」から 1 と 6 を取得します。split()","

于 2012-09-29T07:39:32.087 に答える