@@ -28,6 +28,11 @@ public static void main(String[] args) {
2828 validZones .add ("SE3" );
2929 validZones .add ("SE4" );
3030
31+ List <String > validHours = new ArrayList <>();
32+ validHours .add ("2h" );
33+ validHours .add ("4h" );
34+ validHours .add ("8h" );
35+
3136
3237 if (args .length == 0 ) { helpMe ();
3338 }
@@ -78,16 +83,15 @@ public static void main(String[] args) {
7883 }
7984 zon = ElpriserAPI .Prisklass .valueOf (zoneOf .toUpperCase ());
8085 List <ElpriserAPI .Elpris > priserIdag = elpriserApi .getPriser (dagensDatum , zon );
81- if (priserIdag == null ) {
82- System .out .println ("Kunde inte hitta några priser " );
86+ if (priserIdag . isEmpty () ) {
87+ System .out .println ("Inga priser hittade för imorgon " );
8388 return ;
8489 } else {
8590 System .out .println ("Dagens priser:" );
8691 }
8792 List <ElpriserAPI .Elpris > priserImorgon = elpriserApi .getPriser (tomorrow , zon );
88- if (priserImorgon == null ){
89- System .out .println ("Kunde inte hitta några priser för imorgon" );
90- return ;
93+ if (priserImorgon .isEmpty ()){
94+ System .out .println ("Inga priser för imorgon hittades" );
9195 } else {
9296 System .out .println ("Morgondagens priser:" );
9397 }
@@ -98,15 +102,20 @@ public static void main(String[] args) {
98102 List <ElpriserAPI .Elpris > kombineradeListor = combinedLists (priserIdag ,priserImorgon );
99103
100104
105+
101106 int timmar =0 ;
102107 if (chargingInput != null ) {
103- try {
104- //när användaren skriver 4h h ersätts med ""
105- timmar = Integer .parseInt (chargingInput .replace ("h" , "" ));
106-
107- } catch (NumberFormatException e ) {
108- helpMe (); return ;
109- }
108+ if (!validHours .contains (chargingInput .toLowerCase ())) {
109+ System .out .println ("Ogiltig charging: " + chargingInput );
110+ helpMe ();
111+ return ;
112+ }
113+ try {
114+ timmar = Integer .parseInt (chargingInput .toLowerCase ().replace ("h" ,"" ));
115+ } catch (NumberFormatException e ) {
116+ helpMe ();
117+ return ;
118+ }
110119 }
111120
112121 if (timmar > 0 ) {
@@ -121,7 +130,7 @@ public static void main(String[] args) {
121130 printPriser (kombineradeListor );
122131 priceMinMax (priserIdag );
123132 medelPris (priserIdag );
124- listWith96Prices (priserIdag );
133+ calculateHourlyAverages (priserIdag );
125134
126135 }
127136
@@ -136,9 +145,7 @@ public static List<ElpriserAPI.Elpris> combinedLists(List<ElpriserAPI.Elpris> pr
136145 public static void chargingWindow (List <ElpriserAPI .Elpris > elpriserLadda , int timmar ) {
137146
138147 DateTimeFormatter minuteFormatter = DateTimeFormatter .ofPattern ("HH:mm" );
139- NumberFormat newFormat = NumberFormat .getNumberInstance (Locale .of ("sv" , "SE" ));
140- newFormat .setMaximumFractionDigits (2 );
141- newFormat .setMinimumFractionDigits (1 );
148+
142149
143150 if (elpriserLadda == null ) {
144151 System .out .println ("Inga eller för få timmar för att beräkna laddningsfönster." );
@@ -166,14 +173,13 @@ public static void chargingWindow (List<ElpriserAPI.Elpris> elpriserLadda, int t
166173 String startTid = start .timeStart ().format (minuteFormatter );
167174 String slutTid = slut .timeEnd ().format (minuteFormatter );
168175 double snittPris = (minSumma /timmar ) * 100 ;
169- String formateratPris = newFormat .format (snittPris );
176+ String formateratPris = numberFormat .format (snittPris );
170177
171178 System .out .printf ("Billigaste laddningsfönster för %dh är kl %s-%s\n Medelpris för fönster: %s öre\n Påbörja laddning %s" , timmar , startTid , slutTid , formateratPris , startTid );
172179 }
173180 }
174-
175- public static void listWith96Prices (List <ElpriserAPI .Elpris > elpriser96 ) {
176-
181+ //Processar prislistan som får 96 priser
182+ public static void calculateHourlyAverages (List <ElpriserAPI .Elpris > elpriser96 ) {
177183
178184 //i är 0; så länge i är mindre än storleken på listan; öka i med 4
179185 for (int i = 0 ; i < elpriser96 .size (); i += 4 ) {
0 commit comments