return 多个数组的方法

method to return more than one array

我有这个代码

public static double[] PDF_CDF_SF(int Sojourn_Time[],double Shape_Factor[],int Num_Analysis_Years){
        double[] CDF=new double[Num_Analysis_Years];
        double[] PDF=new double[Num_Analysis_Years];
        double[] SF=new double[Num_Analysis_Years];
        for(int i=0;i<Num_Analysis_Years;i++){
                CDF[i]=1                    
                SF[i]=1-CDF[i];
                PDF[i]=1;
        }
        return (CDF,SF,BDF);
}

是否可以return三个Matrix CDF, SF 和 BDF 有什么建议吗? 提前致谢

一个函数不能 return 多个东西,但你可以 return 封装它们的单个对象。

public class Tables {
    private double[] CDF;
    private double[] PDF;
    private double[] SF;

    public Tables(int analysisYears) {
        CDF = new int[analysisYears];
        PDF = new int[analysisYears];
        SF = new int[analysisYears];
    }

}

我将这些数组的操作和播种留作 reader 的练习。

没有。但是还有其他方法可以 return 所有数组:
1) 作为单个二维数组:
use double[] result = ArrayUtils.addAll(CDF,SF,BDF);
2) 把它们放在另一个数组中作为它的元素

double[][] result = new double[3][];

3) 将它们放入 List<double[]>:

List<double[]> result = new LinkedList<double[]>();
result.add( CDF );
result.add( CDF );
result.add( CDF );

4) 正如@Makoto 回答的那样:使用字段

您可以 return 它们作为一个数组数组:

public static double[][] PDF_CDF_SF(int Sojourn_Time[], double Shape_Factor[], int Num_Analysis_Years) {
    double[] CDF = new double[Num_Analysis_Years];
    double[] PDF = new double[Num_Analysis_Years];
    double[] SF = new double[Num_Analysis_Years];
    for (int i = 0; i < Num_Analysis_Years; i++) {
        CDF[i] = 1;
        SF[i] = 1 - CDF[i];
        PDF[i] = 1;
    }
    double[][] ret = {CDF, PDF, SF};
    return ret;
}