【问题标题】:method to return more than one array返回多个数组的方法
【发布时间】:2015-01-26 06:01:43
【问题描述】:

我有这个代码

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

是否可以返回您建议的三个Matrix CDF,SF和BDF? 提前致谢

【问题讨论】:

  • 我建议创建一个 bean 来保存数据并返回。
  • 你应该使用double[][]作为返回类型而不是double[]。请在您的代码中使用 Java 命名约定。
  • 构造函数不是返回类型..但是如果你不想返回然后在正常方法中返回更多然后一个项目创建列表和集合返回你可以在 ArrayList 中返回 objs
  • 好吧,我很高兴看到您至少采纳了我的建议,但您不应该修改您现有的问题来忽略现有的答案。
  • 我已回滚您的上次编辑,因为它使现有答案无效。如果您有一个新问题,请创建一个新问题(即使它是相关的),不要从根本上改变您的问题,如有必要添加额外信息。

标签: java arrays return


【解决方案1】:

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

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

}

我将这些数组的操作和播种留给读者作为练习。

【讨论】:

  • 你在平局上更快,但我正要建议同样的事情。
【解决方案2】:

您可以将它们作为一个数组数组返回:

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

【讨论】:

  • 感谢 mohammad 的工作,但我如何将它们分成三个不同的数组
  • 双 [][] 结果 = PDF_CDF_SF(...);双[] arr1 =结果[0];双[] arr2 =结果[1];双 [] arr3 = 结果[2];
【解决方案3】:

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

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

3) 将它们放入List&lt;double[]&gt;:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 2016-04-05
    • 2017-01-13
    • 1970-01-01
    相关资源
    最近更新 更多