Kleines Menü erstellt

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
Sebastian Tews 2024-01-11 21:08:57 +01:00
parent 091418cbde
commit 9b12aa90e1
3 changed files with 136 additions and 111 deletions

View File

@ -1,100 +1,20 @@
,,,,,,,,,,,,,,,,,,,,,,,,,, Hallo,,,,,,,,,,,,,,,,,,,
1,,,,,,,,,,,,,,,,,,,,,,,,,, 123,,7,,,,,,,,,,,,,,
123,,,,,,,,,,,,,,,,,,,,,,,,,, 55,7,,4,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,, 9,,,,,,,,,,,,,,,,,,
,,,,,,,,,=7*6,,,,,,,,,,,,,,,,, 1,,,,,,,,=7*6,,,,,,,,,,
,,,,,,,,,=3/2,,,,,,,,,,,,,,,,, ,,,,,,,,,=3/2,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,
,=41+A2,,,,,,,,,,,,,,,,,,,,,,,,, ,=41+A2,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,LL,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,Z1,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,

1 Hallo,,,,,,,,,,,,,,,,,,,
2 1 123,,7,,,,,,,,,,,,,,
3 123 55,7,,4,,,,,,,,,,,,,
4 9,,,,,,,,,,,,,,,,,,
5 1,,,,,,,,=7*6,,,,,,,,,, =7*6
6 ,,,,,,,,,=3/2,,,,,,,,,, =3/2
7 ,,,,,,,,,,,,,,,,,,,
8 ,,,,,,,,,,,,,,,,,,,
9 ,=41+A2,,,,,,,,,,,,,,,,,, =41+A2
10 ,,,,,,,,,,,,,,,,,,,
11 ,,,,,,,,,,,,,,,,,,,
12 ,,,,,,,,,LL,,,,,,,,,
13 ,,,,,,,,,,,,,,,,,,,
14 ,,,,,,,,,,,,,,,,,,,
15 ,,,,,,,Z1,,,,,,,,,,,
16 ,,,,,,,,,,,,,,,,,,,
17 ,,,,,,,,,,,,,,,,,,,
18 ,,,,,,,,,,,,,,,,,,,
19 ,,,,,,,,,,,,,,,,,,,
20 ,,,,,,,,,,,,,,,,,,,

View File

@ -1,5 +1,7 @@
package de.hs_mannheim.informatik.spreadsheet; package de.hs_mannheim.informatik.spreadsheet;
import org.junit.Test;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.IOException; 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 * @param row steht für die Zeile
* @return Nothing. * @param col steht für die Spalte
*/ */
private void evaluateCell(int row, int col) { private void evaluateCell(int row, int col) {
String formula = cells[row][col].getFormula(); String formula = cells[row][col].getFormula();
@ -199,6 +201,13 @@ public class Spreadsheet {
return result; 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) { private long multiplier(String startCellName, String endCellName) {
int startRow = getRow(startCellName); int startRow = getRow(startCellName);
@ -216,6 +225,12 @@ public class Spreadsheet {
return result; 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) { private long mittelwert(String startCellName, String endCellName) {
int startRow = getRow(startCellName); int startRow = getRow(startCellName);
@ -248,7 +263,8 @@ public class Spreadsheet {
for (int j = startCol; j <= endCol; j++) { for (int j = startCol; j <= endCol; j++) {
result = (Integer.parseInt(cells[i][j].getValue())); 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())); result = (Integer.parseInt(cells[i][j].getValue()));
} }
@ -267,7 +283,8 @@ public class Spreadsheet {
for (int i = startRow; i <= endRow; i++) { for (int i = startRow; i <= endRow; i++) {
for (int j = startCol; j <= endCol; j++) { 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())); result = (Integer.parseInt(cells[i][j].getValue()));
} }
@ -289,24 +306,86 @@ public class Spreadsheet {
* @param formula The expression to be evaluated. * @param formula The expression to be evaluated.
* @return The result calculated. * @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); 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 // 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() while (m.find()) { // m.find() must always be used before m.group()
String s = m.group(); String s = m.group();
if (!s.isEmpty()) { 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() { public String toString() {

View File

@ -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);
}
}