簡體   English   中英

查找作為變量 arguments (varargs) 參數傳遞的數組總和,然后將結果作為數組返回 Java

[英]Find Sum of array passed as variable arguments (varargs) parameter then return result as an array in Java

  1. 需要將數組作為變量傳遞 arguments (varargs) ==> 考慮
double[] array_1 = {1.1, 3.3, 5.5, 7.7, 9.9, 11.11};
double[] array_2 = {2.222, 4.444, 6.666, 8.888, 10.100, 12.122};
double[] array_3 = {3.111, 3.222, 3.333, 3.444, 3.555, 3.666};
.
.
.

double[] array_n = {12.444, 12.888, 13.332, 13.776, 14.22, 14.664}
  1. 將 arrays 的所有 n 個數相加

sum_n_arrays = array_1 + array_2 +... + array_n

  1. 將結果作為一個最終數組返回 ==> sum_of_n_arrays = [x1, x2, x3, x4, x5, x6];

這是到目前為止的進展......

添加三個 arrays:

public double[] sumThreeArrays(double[] firstArray, double[] secondArray, double[] thirdArray) {
   // check all arrays are not null and of same length
   int length = (firstArray.length == secondArray.length && secondArray.length==thirdArray.length ) &&
                (firstArray.length >0 && secondArray.length >0 && thirdArray.length >0)
                ? firstArray.length : -1;

   double[] result = new double[length];
   if (length > 0) {
            for (int i=0; i<length; i++) {
                result[i] = firstArray[i] + secondArray[i] + thirdArray[i];
            }
    }
    System.out.println("Sum of Three Arrays: " + Arrays.toString(result));
    return result;
    }

結果 ---> 三之和 Arrays: [6.433, 10.966, 15.499, 20.032, 23.555, 26.898]

對 function 執行相同的操作,將多個 n arrays 作為參數(可變參數),然后返回數組總和作為最終結果

public double[] SumMultipleArray(double[] ...arr) {
   //1. pass multiple arrays using var args --> spread operator

   //2. check length of each array is same and not NULL

  //3. Sum all multiple arrays
        ```
        public double[] sumVarArg(double[] ...arr) {
            int arrayLength;
            double[] result = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
            int argsCount = arr.length; // number of arguments passed as an array     

        for (double[] d: arr) {
            arrayLength = d.length; // number of element in each array

            for (int i=0; i<arrayLength; i++) {
                result[i] += d[i];
            }

        }
        return result;
    }
        ```





  //4. TO DO (Thinking of using stream and filter but not quite done...)
  TO DO

}

謝謝

public class TryMe {
public static void main(String[] args){

    double[][] arrayToPutInFunction = new double[4][6];
    for(int i = 0; i < arrayToPutInFunction.length; i++){
        for(int j = 0; j < arrayToPutInFunction[i].length; j++){
            arrayToPutInFunction[i][j] = j;
        }
    }

    double[] result = multipleArraysSum(arrayToPutInFunction);

    System.out.println("First cell: " + result[0] + " Second cell: " +  result[1] + 
             " Third cell: " + result[2] + " Fourth cell: " +result[3]
              + " Fifth cell: " + result[4] + " Sixth cell: " + result[5]);
    }

    public static double[] multipleArraysSum(double[][] twoDimensionalArray) {
        // check all arrays are not null and of same length
        int allArraysmustHaveThisLength = twoDimensionalArray[0].length;
        double[] resultArray = new double[allArraysmustHaveThisLength];
        for(int i = 0; i < twoDimensionalArray.length; i++){
            for(int j = 0; j < twoDimensionalArray[i].length; j++){
                if(twoDimensionalArray[i].length == allArraysmustHaveThisLength){
                    resultArray[j] += twoDimensionalArray[i][j];
                } else {
                    break;
                }
            }
        }
        return resultArray;
    }
}

如果你真的想添加一個未知數 arrays,我建議使用二維數組。 通過這種方式,您可以用您擁有的數字填充二維數組並將其插入到 multipleArraysSum-Function 中,以將每個單元格添加到您將獲得的最終一維數組中。

編輯:

arrayToPutInFunction 只是用數字填充二維數組。 當您嘗試代碼時,您會看到結果數組恰好包含 6 個單元格。 當 arrays 中的一個與第一個數組的長度不同時,它將中斷並停止。

我想這就是你想要做的:

import java.util.Arrays;

/**
 *
 * @author sowrov
 */
public class Main {
    static double[] SumMultipleArray(double[] ...arr) {
        double [] res = new double[arr.length];
        int i=0;
        for (double[] d: arr) {
            double sum=0;
            if (d!=null) { //Null check
                for (double v: d) {
                    sum += v;
                }
            }

            res[i++] = sum;
        }
        return res;
    }

    public static void main(String[] args) {
        double[] array_1 = {1.1, 3.3, 5.5, 7.7, 9.9, 11.11};
        double[] array_2 = {2.222, 4.444, 6.666, 8.888, 10.100, 12.122};
        double[] array_3 = {3.111, 3.222, 3.333, 3.444, 3.555, 3.666};
        double[] array_4 = {};
        double[] array_5 = null;
        double[] array_n = {12.444, 12.888, 13.332, 13.776, 14.22, 14.664};


        double[] res = SumMultipleArray(array_1, array_2, array_3, array_4, array_5, array_n);

        System.out.println(Arrays.toString(res));
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM