2014-06-18 138 views
-1

我有這樣的方法:JAVA:VARARGS添加變量

public static double[] averages(double[]... input) { 

    double[] result = new double[input.length]; 

    for(int i = 0; i< result.length; i++) { 
    result[i] = Arrays.stream(input[i]).average().getAsDouble(); 
    } 

    return result; 
    } 

我不知道先驗的,我應該有多少雙陣列切換到這個方法。我該怎麼做才能在for循環中添加所有變量double []?

在這種情況下我:

 ArrayList<double[]> sim=new ArrayList<double[]>(); 

    arrays.add(new double[]{0.25,0.97,0.47,0.31,0.71}); 
    arrays.add(new double[]{0.51,0.91,0.88,0.12,0.15}); 
    arrays.add(new double[]{0.47,0.71,0.42,0.17,0.71}); 
    arrays.add(new double[]{0.41,0.55,0.53,0.64,0.81}); 
    arrays.add(new double[]{0.91,0.14,0.71,0.11,0.61}); 

但不幸的是,我不知道陣列運行程序前翻倍[]。

我應該去法平均值()目前在ArrayList的 「SIM」 5個陣列

我應該得到的東西是這樣的:

averages(arrays.get(0),arrays.get(1),arrays.get(2),arrays.get(3),arrays.get(4)) 

但內容dell'ArrayList 「SIM」 我做執行前不知道!

+1

我不的方法不明白這個問題。你現在有什麼問題?這不是你不想做的事情? –

+0

在運行程序之前,我不知道數組double []「sim」。我想在程序的動態執行中添加各種數組double []方法averages()。 – Enzo

+2

我多次閱讀你的問題,但我仍然不明白。 –

回答

0

正如我在評論中所說的,我沒有真正明白你的問題。不過,我想你想打電話給你的平均方法喜歡 -

ArrayList<double[]> sim = new ArrayList<double[]>(); 

sim.add(averages(new double[]{0.25,0.97,0.47,0.31,0.71})); 
sim.add(averages(new double[]{0.51,0.91,0.88,0.12,0.15})); 
sim.add(averages(new double[]{0.47,0.71,0.42,0.17,0.71})); 
sim.add(averages(new double[]{0.41,0.55,0.53,0.64,0.81})); 
sim.add(averages(new double[]{0.91,0.14,0.71,0.11,0.61})); 
1

首先,你可能做了一個錯字,沒有你的意思是:

sim.add(new double[]{0.25,0.97,0.47,0.31,0.71}); 

會取得更加SENCE。

然後,你可以打電話給你的方法如下:

double[] results = averages(sim.toArray(new double[]{})); 

我沒有嘗試,雖然運行的新陣列是那裏,因爲toArray()返回Object[]而不是T[]出於某種原因該方法。

0

我覺得OP的問題是:

「我必須DoSomething的()雙打的陣列的列表,但我不知道這樣的列表的大小如何添加雙打的陣列。到 列表與一個(for)循環dinamically?「

如果我把它正確的話,你必須明白的第一件事是你的循環應該結束的條件。既然你不知道列表的大小,for循環不是你需要的。您應該使用其他循環,如具有衆所周知的結束條件的while loop

告訴我們這些雙打數組來自哪裏,也許我們可以幫助您更多。

對於doSomething()部分,例如計算每個數組的avarage並把它放在另一個數組,假定一切正常,通話

averages(arrays.get(0),arrays.get(1),arrays.get(2),arrays.get(3),arrays.get(4)) 

應該成爲

averages(sim) 

像這樣

public static double[] averages(List<double[]> input) { 

    double[] result = new double[input.size()]; 

    int i=0; 
    for(double[] doubleArray: input) { 
    result[i++] = Arrays.stream(doubleArray).average().getAsDouble(); 
    } 

    return result; 
    }