import java.util.ArrayList; import java.util.Collections; public class StatisticsCalculator { public static double max(ArrayList array) { double max = 0; for(double waarde : array){ if(waarde > max){ max = waarde; } } return max; } public static double min(ArrayList array) { double min = array.get(0); for(double waarde : array){ if(waarde < min){ min = waarde; } } return min; } public static double avg(ArrayList array) { double avg = 0; for(double waarde : array){ avg += waarde; } avg /= array.size(); return avg; } public static double median(ArrayList array2){ ArrayList array = new ArrayList(); for(double db : array2) { array.add(db); } Collections.sort(array); //sort the array double median = 0; int middle = array.size()/2; //calculate the middle of the array if (array.size()%2 == 1) { //check if the array is even or uneven median = array.get(middle); } else { median = (array.get(middle-1) + array.get(middle+1)) / 2; } return median; } public static double modus(ArrayList array){ double maxValue = 0; int maxCount = 0; for (int i = 0; i < array.size(); ++i){ //cycle through every number in the array int count = 0; for (int j = 0; j < array.size(); ++j) { if (array.get(j) == array.get(i)){ ++count; } } if (count > maxCount) { //if the count is bigger then the max count, it will be the temporary modus maxCount = count; maxValue = array.get(i); } } return maxValue; } public static double afwijking(ArrayList array){ double mediaan = StatisticsCalculator.median(array); double afwijking = 0; for(double m :array){ afwijking += (mediaan-m)*(mediaan-m); } afwijking /= array.size(); afwijking = Math.sqrt(afwijking); return afwijking; } public static double graagDagen(ArrayList array) ArrayList avgTempDag = new ArrayList(); int i = 0; double avgTemp = 0; //Breken de gemiddelde temperatuur per dag. for(double db : array) { i++; if(i%1440==0) { avgTempDag.add(avgTemp); avgTemp = 0; } avgTemp += db; } avgTemp /= array.size(); int graaddagen = 0; int periodeBegin = 0; int periodeEind = 1439; for(int j = 0; j < avgTempDag.size(); j++) { if(avgTemp < 18) { graaddagen += 18 - avgTemp; } } periodeBegin += 1400; periodeEind += 1400; //graaddagen afronden return graaddagen; public static int[] langsteDroogstePeriode(ArrayList array) { return langsteDroogstePeriodeMetMax(array, 0); } public static int[] langsteDroogstePeriodeMetMax(ArrayList array, int maxNeerslag) { int[] index = new int[2]; int index1 = 0; int index2 = 0; //Code index[0] = index1; index[1] = index2; return index; } public static int[] langsteRegenPeriode(ArrayList array) { int[] index = new int[2]; int index1 = 0; int index2 = 0; //Code index[0] = index1; index[1] = index2; return index; } public static double maximaleRegenPeriode(ArrayList array) { double totaleRegen = 0; for(double db : array) { totaleRegen += db; } return totaleRegen; } public static int[] langsteZomersePeriode(ArrayList array) { ArrayList maxTempDag = new ArrayList(); int i = 0; double maxTemp = 0; //Bereken de maximale temperatuur per dag. for(double db : array) { i++; if(i%1440==0) { maxTempDag.add(maxTemp); maxTemp = 0; } if(db > maxTemp) { maxTemp = db; } } //Creer een array met twee indexen int[] index = new int[2]; int index1 = 0; int index2 = 0; //Een tijdelijke index om bij te houden wat de index was in het geval dat de vorige groter was. int index1_1 = 0; //Een boolean boolean zomers = false; int p = 0; int maxDays = 0; //Doorloop je maximale temperaturen en zoek de langste periode for(int t=0; t 25) { p++; if(!zomers) { zomers = true; index1_1 = t; } } else { if(p > maxDays) { maxDays = p; index1 = index1_1; index2 = t-1; zomers=false; } p=0; } } //Het terugsturen van de gevonden indexen. Je doet ze keer 1440 omdat je bij het berekenen van //de temperatuur per dag je het in stukken van 1440 samenvoegde. index[0] = index1*1440; if(index2<0){index2=0;} index[1] = index2*1440; return index; } public static int[] langsteHitteGolfPeriode(ArrayList array) { int[] index = new int[2]; int index1 = 0; int index2 = 0; //Code index[0] = index1; index[1] = index2; return index; } public static int[] langsteTempStijgingPeriode(ArrayList array) { int[] index = new int[2]; int index1 = 0; int index2 = 0; //Code index[0] = index1; index[1] = index2; return index; } }