當我嘗試檢索單個值以找到計算標準偏差過程中的差異時,出現錯誤。我無法弄清楚是否使用.get()或.getValue,我迷路了。我已經計算出了平均值。標準偏差arraylist錯誤
final ArrayList<Map.Entry<String,NumberHolder>> entries = new ArrayList<Map.Entry<String,NumberHolder>>(uaCount.entrySet());
for(Map.Entry<String,NumberHolder> entry : entries) //iterating over the sorted hashmap
{
double temp = 0;
double variance = 0;
for (int i = 0; i <= entry.getValue().occurrences ; i ++)
{
temp += ((entry.getValue(i).singleValues) - average)*((entry.getValue(i).singleValues) - average);
variance = temp/entry.getValue().occurrences;
}
double stdDev = Math.sqrt(variance);
這是我的NumberHolder類,我填充了我的主要功能。我使用該公式中的標準差:http://www.mathsisfun.com/data/standard-deviation-formulas.html
基於我的代碼,出現的是N,並從singleValues值的ArrayList是夕
public static class NumberHolder
{
public int occurrences = 0;
public int sumtime_in_milliseconds = 0;
public ArrayList<Long> singleValues = new ArrayList<Long>();
}
這是我的錯誤。 :
The method getValue() in the type Map.Entry<String,series3.NumberHolder> is not applicable for the arguments (int).
如果你需要看到更多的代碼,請只問,我不想把任何不必要的,但我可能會錯過一些東西。
你能解釋一下<而不是<=避免異常嗎? – user2007843 2013-04-05 17:57:44
@ user2007843因爲我猜這種情況是ArrayList的大小(比如說6)。如果你使用'i <= ..',那麼在上一次迭代中,'i'將具有值'6'。但'ArrayList'是'indexed based' dynamic resizable'array',它從'0'開始並以'size() - 1'結尾,即'5'。所以當你試圖在'ArrayList'的'6th'索引處獲取元素時,它會拋出'IndexOutOfBoundsException' – 2013-04-05 18:01:17
好吧,這很有意義,謝謝 – user2007843 2013-04-05 18:02:14