Ausrechnen von Formeln
parent
9096432995
commit
365b569a67
|
@ -2,5 +2,6 @@
|
|||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||
<classpathentry kind="src" path="Axel/src"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
|
|
|
@ -20,11 +20,11 @@ public class Axel {
|
|||
cols=Integer.parseInt(kb.nextLine());
|
||||
Spreadsheet spr=new Spreadsheet(rows,cols);
|
||||
//spr.put("A3", "3");
|
||||
//spr.put("A2", "1");
|
||||
|
||||
//spr.put("B9", "=41+A2");
|
||||
//spr.put("J5", "=7*6");
|
||||
//spr.put("J6", "=3/2");
|
||||
spr.put("A2", "2");
|
||||
spr.put("A1","=19+4");
|
||||
spr.put("B9", "=41+A2");
|
||||
spr.put("J5", "=7*6");
|
||||
spr.put("J6", "=4/2");
|
||||
|
||||
while(true) {
|
||||
System.out.println(spr);
|
||||
|
@ -44,8 +44,6 @@ public class Axel {
|
|||
}
|
||||
spr.saveCsv("/tmp/test.csv");
|
||||
kb.close();
|
||||
|
||||
// TODO: You might want to put "UI loop" for entering value and formulas here resp. in some UI methods.
|
||||
}
|
||||
|
||||
}
|
|
@ -21,15 +21,13 @@ public class Spreadsheet {
|
|||
* @param cols number of columns
|
||||
*/
|
||||
public Spreadsheet(int rows, int cols) {
|
||||
|
||||
// TODO limit the maximum size on 99 (1..99) rows and 26 (A..Z) columns
|
||||
if (rows>99){
|
||||
rows=99;
|
||||
}
|
||||
if (cols>26) {
|
||||
cols=26;
|
||||
}
|
||||
|
||||
|
||||
cells = new Cell[rows][cols];
|
||||
|
||||
for (int r = 0; r < rows; r++)
|
||||
|
@ -260,14 +258,59 @@ public class Spreadsheet {
|
|||
Matcher m = Pattern.compile("([A-Z][0-9]*)|[-\\+\\*/]|[0-9]*").matcher(formula);
|
||||
|
||||
long res = 0;
|
||||
boolean first=true;
|
||||
String operation="";
|
||||
|
||||
// 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);
|
||||
if(!s.isEmpty()) {
|
||||
if(first && (int)s.charAt(0)>=(int)'A'&&(int)s.charAt(0)<=(int)'Z') {
|
||||
res=Integer.parseInt(cells[(Integer.parseInt(s.substring(1)))-1][(int)s.charAt(0)-(int)-'A'].getValue());
|
||||
first=false;
|
||||
}else if(first) {
|
||||
res=Integer.parseInt(s);
|
||||
first=false;
|
||||
}else if(s.equals("+")){
|
||||
operation="+";
|
||||
}else if(s.equals("-")){
|
||||
operation="-";
|
||||
}else if(s.equals("*")){
|
||||
operation="*";
|
||||
}else if(s.equals("/")){
|
||||
operation="/";
|
||||
}else if((int)s.charAt(0)>=(int)'A'&&(int)s.charAt(0)<=(int)'Z'){
|
||||
switch(operation) {
|
||||
case("+"):
|
||||
res+=Integer.parseInt(cells[(Integer.parseInt(s.substring(1)))-1][(int)s.charAt(0)-(int)'A'].getValue());
|
||||
break;
|
||||
case("-"):
|
||||
res-=Integer.parseInt(cells[(Integer.parseInt(s.substring(1)))-1][(int)s.charAt(0)-(int)'A'].getValue());
|
||||
break;
|
||||
case("*"):
|
||||
res*=Integer.parseInt(cells[(Integer.parseInt(s.substring(1)))-1][(int)s.charAt(0)-(int)'A'].getValue());
|
||||
break;
|
||||
case("/"):
|
||||
res/=Integer.parseInt(cells[(Integer.parseInt(s.substring(1)))-1][(int)s.charAt(0)-(int)'A'].getValue());
|
||||
break;
|
||||
}
|
||||
}else {
|
||||
switch(operation) {
|
||||
case("+"):
|
||||
res+=Integer.parseInt(s);
|
||||
break;
|
||||
case("-"):
|
||||
res-=Integer.parseInt(s);
|
||||
break;
|
||||
case("*"):
|
||||
res*=Integer.parseInt(s);
|
||||
break;
|
||||
case("/"):
|
||||
res/=Integer.parseInt(s);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue