From 29aeb8e3fae22d30bd11456e7be4e8341ae4aa62 Mon Sep 17 00:00:00 2001 From: "github-classroom[bot]" <66690702+github-classroom[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2024 07:53:13 +0000 Subject: [PATCH 1/7] Setting up GitHub Classroom Feedback From 8ad62dcf488f5db63eaaaaf51df9a4fe39dcd064 Mon Sep 17 00:00:00 2001 From: "github-classroom[bot]" <66690702+github-classroom[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2024 07:53:15 +0000 Subject: [PATCH 2/7] add deadline --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 2ebc518..92f95a2 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ +[![Review Assignment Due Date](https://classroom.github.com/assets/deadline-readme-button-22041afd0340ce965d47ae6ef1cefeee28c7c493a6346c4f15d667ab976d596c.svg)](https://classroom.github.com/a/iEfoXdPr) Java Basics =================== From 3c3db917986c432f5e36bdd7e1872a55f2607831 Mon Sep 17 00:00:00 2001 From: mgr87 Date: Tue, 10 Sep 2024 14:59:09 +0200 Subject: [PATCH 3/7] =?UTF-8?q?Meny,=20Inmatning=20samt=20MinMaxMedel=20f?= =?UTF-8?q?=C3=A4rdiga?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/example/App.java | 98 +++++++++++++++++++++++++++++- 1 file changed, 97 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/example/App.java b/src/main/java/org/example/App.java index 6e31950..d344de6 100644 --- a/src/main/java/org/example/App.java +++ b/src/main/java/org/example/App.java @@ -1,8 +1,104 @@ package org.example; +import java.util.Scanner; + public class App { + static int[] elpriser = new int[24]; + static boolean priserInmatade = false; + public static void main(String[] args) { - System.out.println("Hello There!"); + Scanner scanner = new Scanner(System.in); + String choice; + + do { + System.out.print(""" + Elpriser + ======== + 1. Inmatning + 2. Min, Max och Medel + 3. Sortera + 4. Bästa Laddningstid (4h) + e. Avsluta + """); + + choice = scanner.nextLine(); + + switch (choice) { + case "1": + inmatning(scanner); + break; + + case "2": + if (priserInmatade) { + minMaxMedel(); + } else { + System.out.print("Du måste först mata in elpriser.\n"); + } + break; + + case "3": + + break; + + case "4": + + break; + + case "e": + break; + + default: + System.out.print("Ogiltigt val, försök igen.\n"); + break; + } + + } while (!choice.equalsIgnoreCase("e")); + + scanner.close(); + } + + public static void minMaxMedel() { + int min = elpriser[0]; + int max = elpriser[0]; + int minTimme = 0; + int maxTimme = 0; + int sum = 0; + + for (int i = 0; i < elpriser.length; i++) { + sum += elpriser[i]; + if (elpriser[i] < min) { + min = elpriser[i]; + minTimme = i; + } + if (elpriser[i] > max) { + max = elpriser[i]; + maxTimme = i; + } + } + + double medel = sum / 24.0; + System.out.printf("\nLägsta pris: %02d-%02d, %d öre/kWh", minTimme, (minTimme +1), min); + System.out.printf("\nHögsta pris: %02d-%02d, %d öre/kWh", maxTimme, (maxTimme +1), max); + System.out.printf("\nMedelpris: %.2f öre/kWh\n", medel); + } + + + public static void inmatning(Scanner scanner) { + System.out.println("Mata in elpriser (i hela ören) för varje timme (00-01, 01-02, ... 23-24):"); + for (int i = 0; i < 24; i++) { + System.out.println("Timme " + i + "-" + (i + 1) + ": "); + while (!scanner.hasNextInt()) { + System.out.println("Felaktig inmatning. Mata in ett heltal i ören"); + scanner.next(); + } + elpriser[i] = scanner.nextInt(); + } + priserInmatade = true; + scanner.nextLine(); } + } + + + From a71a6c7958c0e854e642c51bb2849ea87179685a Mon Sep 17 00:00:00 2001 From: mgr87 Date: Wed, 18 Sep 2024 07:46:15 +0200 Subject: [PATCH 4/7] Update --- src/main/java/org/example/App.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/example/App.java b/src/main/java/org/example/App.java index d344de6..5918346 100644 --- a/src/main/java/org/example/App.java +++ b/src/main/java/org/example/App.java @@ -22,7 +22,7 @@ public static void main(String[] args) { e. Avsluta """); - choice = scanner.nextLine(); + choice = scanner.nextLine().toLowerCase(); switch (choice) { case "1": From 40280e07e64a7014f824f237b4e89738c4a10ce3 Mon Sep 17 00:00:00 2001 From: Max Date: Wed, 18 Sep 2024 10:06:56 +0200 Subject: [PATCH 5/7] Sorting finished --- src/main/java/org/example/App.java | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/example/App.java b/src/main/java/org/example/App.java index 5918346..3c3b892 100644 --- a/src/main/java/org/example/App.java +++ b/src/main/java/org/example/App.java @@ -1,6 +1,6 @@ package org.example; -import java.util.Scanner; +import java.util.*; public class App { @@ -8,6 +8,7 @@ public class App { static boolean priserInmatade = false; public static void main(String[] args) { + Locale.setDefault(Locale.of("SV", "se")); Scanner scanner = new Scanner(System.in); String choice; @@ -38,7 +39,11 @@ public static void main(String[] args) { break; case "3": - + if (priserInmatade) { + Sortera(); + } else { + System.out.println("Du måste först mata in elpriser.\n"); + } break; case "4": @@ -78,14 +83,14 @@ public static void minMaxMedel() { } double medel = sum / 24.0; - System.out.printf("\nLägsta pris: %02d-%02d, %d öre/kWh", minTimme, (minTimme +1), min); - System.out.printf("\nHögsta pris: %02d-%02d, %d öre/kWh", maxTimme, (maxTimme +1), max); + System.out.printf("\nLägsta pris: %02d-%02d, %d öre/kWh", minTimme, (minTimme + 1), min); + System.out.printf("\nHögsta pris: %02d-%02d, %d öre/kWh", maxTimme, (maxTimme + 1), max); System.out.printf("\nMedelpris: %.2f öre/kWh\n", medel); } public static void inmatning(Scanner scanner) { - System.out.println("Mata in elpriser (i hela ören) för varje timme (00-01, 01-02, ... 23-24):"); + System.out.println("\nMata in elpriser (i hela ören) för varje timme (00-01, 01-02, ... 23-24):"); for (int i = 0; i < 24; i++) { System.out.println("Timme " + i + "-" + (i + 1) + ": "); while (!scanner.hasNextInt()) { @@ -98,6 +103,21 @@ public static void inmatning(Scanner scanner) { scanner.nextLine(); } + public static void Sortera() { + List priceTimePairs = new ArrayList<>(); + + for (int i = 0; i < elpriser.length; i++) { + priceTimePairs.add(new String[]{String.format("%02d-%02d", i, (i + 1)), String.valueOf(elpriser[i])}); + + } + + priceTimePairs.sort((pair1, pair2) -> Integer.compare(Integer.parseInt(pair2[1]), Integer.parseInt(pair1[1]))); + + for (String[] pair : priceTimePairs) { + System.out.printf("%s %s öre\n", pair[0], pair[1]); + } + } + } From a321f6c11868416aaea73b887754aaa6bf96d2ac Mon Sep 17 00:00:00 2001 From: Max Date: Wed, 18 Sep 2024 12:43:26 +0200 Subject: [PATCH 6/7] G-krav avklarat --- src/main/java/org/example/App.java | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/example/App.java b/src/main/java/org/example/App.java index 3c3b892..1e94b2e 100644 --- a/src/main/java/org/example/App.java +++ b/src/main/java/org/example/App.java @@ -20,6 +20,7 @@ public static void main(String[] args) { 2. Min, Max och Medel 3. Sortera 4. Bästa Laddningstid (4h) + 5. Visualisering e. Avsluta """); @@ -47,7 +48,11 @@ public static void main(String[] args) { break; case "4": - + if (priserInmatade) { + BestLoadTimes(); + } else { + System.out.println("Du måste först mata in elpriser.\n"); + } break; case "e": @@ -88,7 +93,6 @@ public static void minMaxMedel() { System.out.printf("\nMedelpris: %.2f öre/kWh\n", medel); } - public static void inmatning(Scanner scanner) { System.out.println("\nMata in elpriser (i hela ören) för varje timme (00-01, 01-02, ... 23-24):"); for (int i = 0; i < 24; i++) { @@ -118,7 +122,27 @@ public static void Sortera() { } } -} + public static void BestLoadTimes() { + int bestStartHour = 0; + int minCost = Integer.MAX_VALUE; + for (int i = 0; i <= elpriser.length - 4; i++) { + int currentCost = 0; + for (int j = i; j < i + 4; j++) { + currentCost += elpriser[j]; + } + if (currentCost < minCost) { + minCost = currentCost; + bestStartHour = i; + } + } + + double averagePrice = minCost / 4.0; + System.out.printf("\nPåbörja laddning klockan %02d\n", bestStartHour); + System.out.printf("Medelpris 4h: %.1f öre/kWh\n", averagePrice); + } + + +} From b50f6e2ea640e10a311fb011695c3737ed0691a7 Mon Sep 17 00:00:00 2001 From: Max Date: Wed, 18 Sep 2024 14:11:50 +0200 Subject: [PATCH 7/7] Visualisering done --- src/main/java/org/example/App.java | 50 ++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/main/java/org/example/App.java b/src/main/java/org/example/App.java index 1e94b2e..bb5fb1a 100644 --- a/src/main/java/org/example/App.java +++ b/src/main/java/org/example/App.java @@ -55,6 +55,13 @@ public static void main(String[] args) { } break; + case "5": + if (priserInmatade) { + visualisering(); + } else { + System.out.println("Du måste först mata in elpriser.\n"); + } + case "e": break; @@ -142,6 +149,49 @@ public static void BestLoadTimes() { System.out.printf("Medelpris 4h: %.1f öre/kWh\n", averagePrice); } + public static void visualisering() { + int maxPrice = Integer.MIN_VALUE; + int minPrice = Integer.MAX_VALUE; + + for (int price : elpriser) { + if (price > maxPrice) { + maxPrice = price; + } + if (price < minPrice) { + minPrice = price; + } + } + + int graphHeight = 5; + int priceRange = maxPrice - minPrice; + + for (int i = graphHeight; i >= 0; i--) { + int currentLevelPrice = minPrice + (priceRange * i / graphHeight); + if (i == 5) System.out.printf("%3d|", maxPrice); + else if (i == 0) System.out.printf("%3d|", minPrice); + else System.out.print(" |"); + for (int price : elpriser) { + if (price >= currentLevelPrice) { + System.out.print(" x"); + } else { + System.out.print(" "); + } + } + System.out.print("\n"); + } + + System.out.print(" |"); + for (int hour = 1; hour <= 24; hour++) { + System.out.print("---"); + } + System.out.print("\n"); + + System.out.print(" |"); + for (int hour = 0; hour < 24; hour++) { + System.out.printf(" %02d", hour); + } + System.out.print("\n"); + } }