calculate() Methode ergänzt
parent
7472ee85e8
commit
a3da7cf436
|
@ -3,6 +3,7 @@ package de.hs_mannheim.informatik.spreadsheet;
|
|||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.sql.SQLOutput;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
|
@ -110,7 +111,8 @@ 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 the row of the cell to be evaluated
|
||||
* @param col the col of the cell to be evaluated
|
||||
* @return Nothing.
|
||||
*/
|
||||
private void evaluateCell(int row, int col) {
|
||||
|
@ -165,17 +167,50 @@ public class Spreadsheet {
|
|||
Matcher m = Pattern.compile("([A-Z][0-9]*)|[-\\+\\*/]|[0-9]*").matcher(formula);
|
||||
|
||||
long res = 0;
|
||||
char operator = '+';
|
||||
|
||||
// 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()) {
|
||||
String s = m.group();
|
||||
if (!s.isEmpty()) {
|
||||
System.out.println(s);
|
||||
long value;
|
||||
|
||||
if(s.isEmpty()){
|
||||
continue;
|
||||
}
|
||||
|
||||
System.out.println("Beginning of loop " + s);
|
||||
if (!(s.matches("[-\\+\\*/]"))) {
|
||||
if(s.matches("[A-Z][0-9]*")) {
|
||||
int col = this.getCol(s);
|
||||
int row = this.getRow(s);
|
||||
|
||||
String cellValue = cells[row][col].getValue();
|
||||
value = Long.parseLong(cells[row][col].getValue());
|
||||
|
||||
}else{
|
||||
System.out.println("in number in try");
|
||||
value = Long.parseLong(s);
|
||||
}
|
||||
|
||||
switch(operator) {
|
||||
case '+':
|
||||
res += value;
|
||||
break;
|
||||
case '-':
|
||||
res -= value;
|
||||
break;
|
||||
case '*':
|
||||
res *= value;
|
||||
break;
|
||||
case '/':
|
||||
if (res != 0) {
|
||||
res /= value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
operator = s.charAt(0);
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue