2012-09-29 168 views
0

可能重複:
How to return multiple objects from a Java method?的java:從方法返回多個值

可以說N = A + B; 對於數字N我想要生成所有可能的值a和b。如果N = 7a和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)組合從該方法返回。

回答

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 
3

返回一個List<String>(假設"(1,6)"將被存儲爲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; 
} 
+0

爲什麼不創建新的類型,而不是使用的**串**? –

+0

@羅伊林,你爲什麼需要? – hmjd

+1

讀取代碼非常簡單,如果您想獲取2個整型結果,則不需要額外的_split/parse_字符串。 –

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」等....

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; 
    } 
} 

[代碼的進一步改進是可能的(例如避免內如果和返回),...]