![](/img/trans.png)
[英]Java 3 dots parameter (varargs) behavior when passed no arguments or null
[英]Find Sum of array passed as variable arguments (varargs) parameter then return result as an array in Java
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}
sum_n_arrays = array_1 + array_2 +... + array_n
這是到目前為止的進展......
添加三個 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.