From 9595830b0b7744a0eb8008903966676727188435 Mon Sep 17 00:00:00 2001 From: eronahasani Date: Mon, 15 Dec 2025 02:51:50 +0100 Subject: [PATCH] quellen.txt --- OS-Abgabe/quellen.txt | 149 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 OS-Abgabe/quellen.txt diff --git a/OS-Abgabe/quellen.txt b/OS-Abgabe/quellen.txt new file mode 100644 index 0000000..c5769a1 --- /dev/null +++ b/OS-Abgabe/quellen.txt @@ -0,0 +1,149 @@ +Punkt 2. wurde eine Codezeile 1:1 übernommen, Punkt 1. und 2. dienten als Information für mich zur Anwendung + + +1. +Claude + +Beschreibung: +Nur zur Erklärung und Information genutzt, keine Codeübernahme. + +Prompt: +wenn ich eine csv datei in eclipse spalte und ich die zeilen jeweils genau untereinander haben möchte, wie gebe ich das an, wir haben das zb mit system.out.printf("%2d...") gelernt + +Ausgabe: +In Java kannst du mit System.out.printf() die Ausgabe formatieren, um Spalten ordentlich auszurichten. Hier sind die wichtigsten Techniken: +Grundlegende Formatierung +System.out.printf("%-20s %10d %8.2f\n", text, zahl, dezimal); +Wichtige Format-Specifier: +* %s - String +* %d - Ganzzahl (integer) +* %f - Fließkommazahl (float/double) +Spaltenbreite festlegen +Die Zahl zwischen % und dem Buchstaben gibt die Breite an: +System.out.printf("%10s", "Name"); // rechtsbündig, 10 Zeichen breit +System.out.printf("%-10s", "Name"); // linksbündig, 10 Zeichen breit +System.out.printf("%5d", 42); // rechtsbündig, 5 Zeichen breit +System.out.printf("%-5d", 42); // linksbündig, 5 Zeichen breit +Praktisches Beispiel für CSV-Daten +// Header ausgeben +System.out.printf("%-20s %-15s %10s %8s\n", "Name", "Stadt", "Alter", "Gehalt"); +System.out.println("-".repeat(60)); + +// Daten ausgeben +System.out.printf("%-20s %-15s %10d %8.2f\n", "Max Mustermann", "Berlin", 25, 3500.50); +System.out.printf("%-20s %-15s %10d %8.2f\n", "Anna Schmidt", "München", 30, 4200.00); +System.out.printf("%-20s %-15s %10d %8.2f\n", "Tim Klein", "Hamburg", 22, 2800.75); +Ausgabe: +Name Stadt Alter Gehalt +------------------------------------------------------------ +Max Mustermann Berlin 25 3500,50 +Anna Schmidt München 30 4200,00 +Tim Klein Hamburg 22 2800,75 +Weitere nützliche Optionen +* %8.2f - 8 Zeichen breit, 2 Nachkommastellen +* %05d - führende Nullen (z.B. 00042) +* %+d - Vorzeichen immer anzeigen +Das - Zeichen macht die Ausgabe linksbündig, was besonders für Text praktisch ist! + + + + + + + +2. +ChatGPT + +Prompt: +in meiner abgabe wird ein produkt von der eingabe gelesen und es soll geprüft werden, ob dieses produkt iwo in der csv datei (hat gegebene produkte) vorkommt - ich habe meine for schleife aufgestellt: for (int i = 0; i <= p.getName().length() - suchbegriff.length(); i++) { - wie stelle ich die bedingung auf die prüft ob das produkt vorhanden ist + +Ausgabe: +Du willst prüfen, ob der eingegebene Suchbegriff irgendwo im Produktnamen vorkommt. Deine Schleife ist schon korrekt aufgebaut, um alle möglichen Teilstrings im Namen zu durchlaufen: + +for (int i = 0; i <= p.getName().length() - suchbegriff.length(); i++) { + String teil = p.getName().substring(i, i + suchbegriff.length()).toLowerCase(); + if (teil.equals(suchbegriff)) { + // Treffer gefunden + } +} + +Erklärung: + • p.getName().substring(i, i + suchbegriff.length()) nimmt einen Abschnitt des Produktnamens, der genau so lang ist wie der Suchbegriff. + • .toLowerCase() sorgt dafür, dass Groß-/Kleinschreibung ignoriert wird. + • equals(suchbegriff) prüft, ob dieser Abschnitt genau dem Suchbegriff entspricht. + +Wenn du willst, kannst du das noch kürzer mit contains schreiben, dann brauchst du die Schleife nicht: + +if (p.getName().toLowerCase().contains(suchbegriff)) { + // Treffer gefunden +} + +Das ist einfacher und lesbarer. + +Willst du, dass ich zeige, wie du das direkt in deinem CSV-Vergleich einsetzen kannst? + + +Prompt: +ich kann doch direkt eine if bedingung aufstellen und equals sofort daran hängen so if (p.getName().substring(i, i + suchbegriff.length()).toLowerCase().equals(suchbegriff + + +Ausgabe: +Ja, genau! Du kannst die if-Bedingung direkt so aufstellen: + +if (p.getName().substring(i, i + suchbegriff.length()).toLowerCase().equals(suchbegriff)) { + // Produkt wurde gefunden +} + + • p.getName().substring(i, i + suchbegriff.length()) holt den Teilstring der Länge deines Suchbegriffs. + • .toLowerCase() sorgt dafür, dass Groß-/Kleinschreibung ignoriert wird. + • equals(suchbegriff) prüft, ob dieser Abschnitt genau dem Suchbegriff entspricht. + +Damit brauchst du nichts extra zu speichern – die Prüfung passiert direkt in der if-Bedingung. + +Wenn du willst, kann ich dir zeigen, wie man das noch kompakter ohne die Schleife machen kann. + + + + + + + +3. +ChatGPT + +Beschreibung: +Nur zur Erklärung und Information genutzt, keine Codeübernahme. + +Prompt: +kannst du mein junit test für mein projekt überprüfen, weil der hat fehlgeschlagen @Test + void testProdukteNetto() { + + warenkorb.produktHinzufügen(produkte.get(0), 1); + + double netto = produkte.get(0).getPreis(); + assertEquals(netto, warenkorb.produkteNetto()); + } + + +Ausgabe: +Okay, lass uns Schritt für Schritt prüfen, warum dein Test fehlschlagen könnte. Dein aktueller Test macht Folgendes: + 1. Fügt ein Produkt mit Menge 1 in den Warenkorb ein. + 2. Liest den Preis des Produkts aus. + 3. Vergleicht diesen Preis mit warenkorb.produkteNetto(). + +Mögliche Gründe für ein Fehlschlagen: + 1. Rundungsfehler bei double-Werten + • assertEquals(double expected, double actual) prüft standardmäßig genau auf Gleichheit. + • Bei Gleitkommazahlen (double) kann es durch interne Berechnungen zu minimalen Abweichungen kommen. + • Lösung: assertEquals(expected, actual, delta) verwenden, z. B. delta = 0.01. + 2. Menge > 1 oder andere Produkte im Warenkorb + • Dein Test berücksichtigt nur Menge 1 und ein Produkt. Wenn intern warenkorb.produkteNetto() etwas anderes summiert (z. B. Steuern oder Rabatte), stimmt der Vergleich nicht. + 3. Produktpreis oder Methodenimplementierung + • Prüfe, ob produkte.get(0).getPreis() und warenkorb.produkteNetto() dieselbe Berechnung nutzen. + • Wenn produkteNetto() z. B. schon eine Rundung oder Zwischensummen verwendet, kann der Test fehlschlagen. + +Fazit: + • Am wahrscheinlichsten ist ein kleiner Rundungsfehler. + • Du kannst assertEquals(netto, warenkorb.produkteNetto(), 0.01) benutzen, um das abzufangen. + +Wenn du willst, kann ich dir direkt eine robustere Version des Tests schreiben, die auch mehrere Produkte und Mengen abdeckt. \ No newline at end of file