forked from hummel/PR1-Spreadsheet
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 Methodemain
parent
091418cbde
commit
9b12aa90e1
|
@ -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,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() {
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue