From 9b12aa90e1cfaec9ace05842928f76556c5db9a6 Mon Sep 17 00:00:00 2001 From: 3010564 <3010564@stud.hs-mannheim.de> Date: Thu, 11 Jan 2024 21:08:57 +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. Mittelwert Min und Max Methoden hinzugefügt Werte verändert in der CSV Datei Calculate Methode hinzugefügt rechner Methode hinzugefügt JavaDocs angefangen zu übernehmen JUnit Test zu der calculate Methode --- Axel/resources/zahlen.csv | 120 +++--------------- .../informatik/spreadsheet/Spreadsheet.java | 101 +++++++++++++-- .../spreadsheet/SpreadsheetTest.java | 26 ++++ 3 files changed, 136 insertions(+), 111 deletions(-) create mode 100644 Axel/src/de/hs_mannheim/informatik/spreadsheet/SpreadsheetTest.java diff --git a/Axel/resources/zahlen.csv b/Axel/resources/zahlen.csv index cdf9945..fb7c673 100644 --- a/Axel/resources/zahlen.csv +++ b/Axel/resources/zahlen.csv @@ -1,100 +1,20 @@ -,,,,,,,,,,,,,,,,,,,,,,,,,, -1,,,,,,,,,,,,,,,,,,,,,,,,,, -123,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,=7*6,,,,,,,,,,,,,,,,, -,,,,,,,,,=3/2,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,=41+A2,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, -,,,,,,,,,,,,,,,,,,,,,,,,,, +Hallo,,,,,,,,,,,,,,,,,,, +123,,7,,,,,,,,,,,,,, +55,7,,4,,,,,,,,,,,,, +9,,,,,,,,,,,,,,,,,, +1,,,,,,,,=7*6,,,,,,,,,, +,,,,,,,,,=3/2,,,,,,,,,, +,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,, +,=41+A2,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,, +,,,,,,,,,LL,,,,,,,,, +,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,, +,,,,,,,Z1,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,, diff --git a/Axel/src/de/hs_mannheim/informatik/spreadsheet/Spreadsheet.java b/Axel/src/de/hs_mannheim/informatik/spreadsheet/Spreadsheet.java index 4761765..fc9bc63 100644 --- a/Axel/src/de/hs_mannheim/informatik/spreadsheet/Spreadsheet.java +++ b/Axel/src/de/hs_mannheim/informatik/spreadsheet/Spreadsheet.java @@ -1,5 +1,7 @@ package de.hs_mannheim.informatik.spreadsheet; +import org.junit.Test; + import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; @@ -145,9 +147,9 @@ public class Spreadsheet { } /** - * This method does the actual evaluation/calcluation of a specific cell - * @param cellName the name of the cell to be evaluated - * @return Nothing. + * + * @param row steht für die Zeile + * @param col steht für die Spalte */ private void evaluateCell(int row, int col) { String formula = cells[row][col].getFormula(); @@ -199,6 +201,13 @@ public class Spreadsheet { return result; } + + /** + * Methode zum berechnen des Produkts eines viereckigen Blocks aus Zellen. Beispiel A2 bis B2 + * @param startCellName The name of the cell in the upper left corner of the rectangle. + * @param endCellName The name of the cell in the lower right corner of the rectangle. + * @return das Produkt. Hier result + */ private long multiplier(String startCellName, String endCellName) { int startRow = getRow(startCellName); @@ -216,6 +225,12 @@ public class Spreadsheet { return result; } + /** + * Methode zum berechnen des Mittelwerts eines viereckigen Blocks aus Zellen. Beispiel A2 bis B2 + * @param startCellName The name of the cell in the upper left corner of the rectangle. + * @param endCellName The name of the cell in the lower right corner of the rectangle. + * @return der Mittelwert. Hier result + */ private long mittelwert(String startCellName, String endCellName) { int startRow = getRow(startCellName); @@ -248,7 +263,8 @@ public class Spreadsheet { for (int j = startCol; j <= endCol; j++) { result = (Integer.parseInt(cells[i][j].getValue())); - if(result > (Integer.parseInt(cells[i][j].getValue()))) { + if(result > (Integer.parseInt(cells[i][j].getValue()))) //größer result für min Wert + { result = (Integer.parseInt(cells[i][j].getValue())); } @@ -267,7 +283,8 @@ public class Spreadsheet { for (int i = startRow; i <= endRow; i++) { for (int j = startCol; j <= endCol; j++) { - if(result < (Integer.parseInt(cells[i][j].getValue()))) { + if(result < (Integer.parseInt(cells[i][j].getValue()))) // kleiner result für max Wert + { result = (Integer.parseInt(cells[i][j].getValue())); } @@ -289,24 +306,86 @@ public class Spreadsheet { * @param formula The expression to be evaluated. * @return The result calculated. */ - private long calculate(String formula) throws ArithmeticException { + + public long calculate(String formula) throws ArithmeticException { Matcher m = Pattern.compile("([A-Z][0-9]*)|[-\\+\\*/]|[0-9]*").matcher(formula); - long res = 0; + long result = 0; + int zwischenspeicher = 0; + int counter = 0; + int newNumber = 0; // TODO implement - // uncomment the following to see an example how the elements of a formula can be accessed + while (m.find()) { // m.find() must always be used before m.group() String s = m.group(); if (!s.isEmpty()) { - System.out.println(s); + //System.out.println(s); + counter++; + + switch (counter){ + case 1: + try { + result = Integer.parseInt(s); + }catch (Exception ignored){ + result = Integer.parseInt(get(s)); + } + break; + case 2: + switch(s) { + case "+": + zwischenspeicher = 1; + break; + case "-": + zwischenspeicher = 2; + break; + case "*": + zwischenspeicher = 3; + break; + case "/": + zwischenspeicher = 4; + break; + default: + System.out.println("ERROR"); + break; + } + break; + case 3: + try { + newNumber = Integer.parseInt(s); + }catch (Exception ignored){ + newNumber = Integer.parseInt(get(s)); + } + result = rechner(result, zwischenspeicher, newNumber); + + counter = 1; + break; + default: + System.out.println("ERROR"); + break; + } } } - return res; + return result; + } + public static long rechner(long a, int auswahl, int b) { + switch(auswahl){ + case 1: + return a + b; + case 2: + return a - b; + case 3: + return a * b; + case 4: + return a / b; + default: + System.out.println("ERROR"); + break; + } + return 0; } - // ----- public String toString() { diff --git a/Axel/src/de/hs_mannheim/informatik/spreadsheet/SpreadsheetTest.java b/Axel/src/de/hs_mannheim/informatik/spreadsheet/SpreadsheetTest.java new file mode 100644 index 0000000..7d05459 --- /dev/null +++ b/Axel/src/de/hs_mannheim/informatik/spreadsheet/SpreadsheetTest.java @@ -0,0 +1,26 @@ +package de.hs_mannheim.informatik.spreadsheet; + +import org.junit.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class SpreadsheetTest { + + @org.junit.jupiter.api.Test + void testCalculate() { + Spreadsheet spr = new Spreadsheet(25,25); // Irgendeine Größe einstellen des Spreadsheets + + assertEquals(spr.calculate("2+2"), 4); + assertEquals(spr.calculate("3*3"), 9); + assertEquals(spr.calculate("6/2"), 3); + + + + spr.put("A1", "6"); + spr.put("A2", "2"); + + assertEquals(spr.calculate("A1+A2"), 8); + assertEquals(spr.calculate("A1*A2"), 12); + assertEquals(spr.calculate("A1/A2"), 3); + } +}