diff --git a/StatisticsCalculator.java b/StatisticsCalculator.java index 72fb576..e3c764f 100644 --- a/StatisticsCalculator.java +++ b/StatisticsCalculator.java @@ -410,20 +410,22 @@ public class StatisticsCalculator { public static Periode langsteHittegolfPeriode(ArrayList array){ - double maxDay = 0; - ArrayList maxTempPerDay = new ArrayList(); - + int maxDay = 0; + ArrayList maxTempPerDay = new ArrayList(); + int vorigeMeting = array.get(0).getDateStamp().getDay(); + //calculate the max for every day for(int i = 0; i < array.size(); i++){ - if((i % 1440) == 0){ - maxTempPerDay.add(maxDay); - maxDay = 0; + if(array.get(i).getDateStamp().getDay() != vorigeMeting){ + maxTempPerDay.add(array.get(maxDay)); + maxDay = i; + vorigeMeting = array.get(i).getDateStamp().getDay(); } - if(array.get(i).getRawOutsideTemp() > maxDay){ - maxDay = array.get(i).getRawOutsideTemp(); + if(array.get(i).getRawOutsideTemp() > array.get(maxDay).getRawOutsideTemp()){ + maxDay = i; } } - + int periodLength = 0; int maxPeriodLength = 5; int numberOfTropicalDays = 0; @@ -433,24 +435,23 @@ public class StatisticsCalculator { Periode periode = new Periode(begin, eind, "Geen hittegolfperiode gevonden"); for(int i = 0; i < maxTempPerDay.size(); i++){ - if( maxTempPerDay.get(i) >= 770){ // If the temperature is bigger then 25 degree Celcius (770 degree Fahrenheit) the summer period will start + System.out.println(maxTempPerDay.get(i)); + if( maxTempPerDay.get(i).getRawOutsideTemp() >= 770){ // If the temperature is bigger then 25 degree Celcius (770 degree Fahrenheit) the summer period will start periodLength++; - if (maxTempPerDay.get(i) >= 860){ // If the temperature is bigger then 30 degree Celcius (860 degree Fahrenheit) it will add a tropical day + if (maxTempPerDay.get(i).getRawOutsideTemp() >= 860){ // If the temperature is bigger then 30 degree Celcius (860 degree Fahrenheit) it will add a tropical day numberOfTropicalDays++; } }else if(periodLength > maxPeriodLength && numberOfTropicalDays >= 3){ //period has ended. If it is bigger then 5 days AND there are 3 or more tropical days, the period is a heat wave + begin.setTimeInMillis(maxTempPerDay.get(i-periodLength).getDateStamp().getTime()); + eind.setTimeInMillis(maxTempPerDay.get(i).getDateStamp().getTime()); maxPeriodLength = periodLength; periodLength = 0; numberOfTropicalDays = 0; - eind.setTimeInMillis(array.get((i-1)*1440).getDateStamp().getTime()); periode = new Periode(eind, begin, "Langste hittegolf periode"); }else{ numberOfTropicalDays = 0; periodLength = 0; } - if(periodLength == 5){ - begin.setTimeInMillis(array.get((i-5)*1440).getDateStamp().getTime()); - } } return periode; }