From 98942ba56da9c07bb96c13db102eab27a87e99d3 Mon Sep 17 00:00:00 2001 From: 3010564 <3010564@stud.hs-mannheim.de> Date: Wed, 10 Jan 2024 23:21:44 +0100 Subject: [PATCH] =?UTF-8?q?Kleines=20Men=C3=BC=20erstellt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Zeilen und Spaltenbegrenzung csvReader erstellt Summenformel und Produktformel erstellt. + Die Möglichkeit erstellt vorhandene Textdatei zu verändern und diese zu Speichern. Wird beim auslesen auch verändert ausgegeben --- .../informatik/spreadsheet/Axel.java | 16 ++++--- .../informatik/spreadsheet/Spreadsheet.java | 48 +++++++++++++++++-- 2 files changed, 54 insertions(+), 10 deletions(-) diff --git a/Axel/src/de/hs_mannheim/informatik/spreadsheet/Axel.java b/Axel/src/de/hs_mannheim/informatik/spreadsheet/Axel.java index 8924e0b..6d286cf 100644 --- a/Axel/src/de/hs_mannheim/informatik/spreadsheet/Axel.java +++ b/Axel/src/de/hs_mannheim/informatik/spreadsheet/Axel.java @@ -11,9 +11,10 @@ public class Axel { public static void main(String[] args) throws FileNotFoundException { Scanner sc = new Scanner(System.in); + Scanner scanner = new Scanner(System.in); System.out.println("Wie viele Zeilen soll das Spreadsheet haben? (1-99)"); - int eingabeR = sc.nextInt(); + int eingabeR = scanner.nextInt(); if (eingabeR > 99) { System.out.println("Eingabe überschreitet das Maximum. Eingabe wird zu 99 gesetzt"); eingabeR = 99; @@ -21,7 +22,7 @@ public class Axel { System.out.println("Eingabe ist möglich"); } System.out.println("Wie viele Spalten soll das Spreadsheet haben? (1-26)"); - int eingabeC = sc.nextInt(); + int eingabeC = scanner.nextInt(); if (eingabeC > 26) { System.out.println("Eingabe überschreitet das Maximum. Eingabe wird zu 26 gesetzt"); eingabeC = 26; @@ -32,10 +33,11 @@ public class Axel { // Wert wird automatisch bei Überschreitung zum Maximum //Tabellengröße anpassen nach "Wahl" - Spreadsheet spr = new Spreadsheet(eingabeR, eingabeC); + spr.readCsv("C:\\Users\\sebas\\IdeaProjects\\PR1-Spreadsheet\\Axel\\resources\\zahlen.csv",',', "A1"); + // csv auslesen - spr.put("A3", "123"); + //spr.put("A1", "123"); spr.put("A2", "1"); spr.put("B9", "=41+A2"); @@ -44,7 +46,7 @@ public class Axel { System.out.println(spr); - spr.saveCsv("C:\\Users\\sebas\\IdeaProjects\\PR1-Spreadsheet\\Axel\\resources\\zahlen.csv"); + //spr.saveCsv("C:\\Users\\sebas\\IdeaProjects\\PR1-Spreadsheet\\Axel\\resources\\zahlen.csv"); // TODO: You might want to put "UI loop" for entering value and formulas here resp. in some UI methods. @@ -58,7 +60,7 @@ public class Axel { do { eingabe = sc.nextLine(); if (eingabe.equals("j")) { - System.out.println("Geben Sie die Spalte (A-J) und die Zeile (1-10)"); + System.out.println("Geben Sie die Spalte (A-Z) und die Zeile (1-99)"); eingabeCR = sc.nextLine(); System.out.println("Weisen Sie jetzt einen Wert zu"); eingabeValue = sc.nextLine(); @@ -75,6 +77,8 @@ public class Axel { System.out.println("Falsche eingabe bitte erneut versuchen"); } } while (true); + spr.saveCsv("C:\\Users\\sebas\\IdeaProjects\\PR1-Spreadsheet\\Axel\\resources\\zahlen.csv"); + // Speichern der Tabelle bzw Inhalt der Textdatei(Änderungen) } } diff --git a/Axel/src/de/hs_mannheim/informatik/spreadsheet/Spreadsheet.java b/Axel/src/de/hs_mannheim/informatik/spreadsheet/Spreadsheet.java index 7abba47..0a30454 100644 --- a/Axel/src/de/hs_mannheim/informatik/spreadsheet/Spreadsheet.java +++ b/Axel/src/de/hs_mannheim/informatik/spreadsheet/Spreadsheet.java @@ -67,7 +67,14 @@ public class Spreadsheet { } private int getRow(String cellName) { - return cellName.charAt(1) - '1'; + int ergebnis = 0; + for (int i = 1; i < cellName.length() ; i++) { + ergebnis = (ergebnis * 10) + cellName.charAt(i) - '0'; + + + } + return ergebnis-1; + } // ----- @@ -149,7 +156,7 @@ public class Spreadsheet { if (formula.startsWith("SUMME(")) // e.g. SUMME(A3:A8) result = "" + sum(formula.substring(6, 8), formula.substring(9, 11)); // TODO adapt to cells with two digits else if (formula.startsWith("PRODUKT(")) // e.g. PRODUKT(A3:B9) - result = "TODO"; // TODO + result = "" + multiplier(formula.substring(6, 8), formula.substring(9, 11)); // TODO else if (formula.startsWith("MITTELWERT(")) // e.g. MITTELWERT(A3:A5) result = "TODO"; // TODO else if (formula.startsWith("STABW(")) // e.g. STABW(C6:D8) -> Standardabweichung @@ -176,10 +183,43 @@ public class Spreadsheet { * @return The sum calculated. */ private long sum(String startCellName, String endCellName) { + + int startRow = getRow(startCellName); + int startCol = getCol(startCellName); + int endRow = getRow(endCellName); + int endCol = getCol(endCellName); + + long result = 0; + + for (int i = startRow; i <= endRow; i++) { + for (int j = startCol; j <= endCol; j++) { + result += (Integer.parseInt(cells[i][j].getValue())); + } + } + + return result; + } + private long multiplier(String startCellName, String endCellName) { + + int startRow = getRow(startCellName); + int startCol = getCol(startCellName); + int endRow = getRow(endCellName); + int endCol = getCol(endCellName); + + long result = 1; // 1 da hier Multiplikation startet + + for (int i = startRow; i <= endRow; i++) { + for (int j = startCol; j <= endCol; j++) { + result *= (Integer.parseInt(cells[i][j].getValue())); + } + } + + return result; + } + + // TODO implement - return 0; - } /** * This method calculates the result of a "normal" algebraic expression. It only needs to support