Hi Comm,
es geht um ein Programm welches eine Datei mit vollständig geklammerten ausdrücken einliest, diese von Leerzeichen befreit und dann im Devide&Conquer ansatz berechnet
Das datei einlesen funktioniert, das leerzeichen rausschmeißen peer split(); auch. auch das raussuchen von teilstückem mit regEx ist nicht das thema aber nun kommt mein problem:
Ein ausdruck der form ((5+2)*7) zerlegt mir regEx wunderbar in einen Teilausdruck (5+2).
nun will ich aus diesem ausdruck die zahlen und den opperator ziehen;
String = (x+y)
String a [1] = x
String a [2] = y
String b [1] = +
die zahlen funktionieren aber der opperator wird mit einer zahl belegt und ich komme nicht drauf warum das so ist.
mein code:
es geht um ein Programm welches eine Datei mit vollständig geklammerten ausdrücken einliest, diese von Leerzeichen befreit und dann im Devide&Conquer ansatz berechnet
Das datei einlesen funktioniert, das leerzeichen rausschmeißen peer split(); auch. auch das raussuchen von teilstückem mit regEx ist nicht das thema aber nun kommt mein problem:
Ein ausdruck der form ((5+2)*7) zerlegt mir regEx wunderbar in einen Teilausdruck (5+2).
nun will ich aus diesem ausdruck die zahlen und den opperator ziehen;
String = (x+y)
String a [1] = x
String a [2] = y
String b [1] = +
die zahlen funktionieren aber der opperator wird mit einer zahl belegt und ich komme nicht drauf warum das so ist.
mein code:
Code:
String a = b;
String c = b;
int zahl1 = 0;
int zahl2 = 0;
int ergebniss = 0;
int i = 1;
String z;
String [] zahlen = new String[5];
String [] opperanten = new String[5];
//Pattern args. | Constructor
Pattern p = Pattern.compile("[0-9]+");
//Matcher Constructor
Matcher m = p.matcher(a);
//extract numbers
while(m.find()){
zahlen[i]=a.substring(m.start(), m.end());
i++;
}
//Pattern args. | Constructor
Pattern pp = Pattern.compile("[\\*\\-\\/\\+]");
//Matcher Constructor
Matcher mp = p.matcher(c);
//extract operators
while(mp.find()){
opperanten[1]=c.substring(mp.start(), mp.end());
}
try {
zahl1 = Integer.parseInt(zahlen[1]);
} catch (Exception E) {
System.err.println("ZAHL 1 WAR KEINE ZAHL!!");
// es war keine Zahl
}
try {
zahl2 = Integer.parseInt(zahlen[2]);
} catch (Exception E) {
System.err.println("ZAHL 2 WAR KEINE ZAHL!!");
// es war keine Zahl
}
if ( opperanten[1].equals("*") ) {
ergebniss = zahl1 * zahl2;
}// end first if
else if ( opperanten[1].equals("/")) {
ergebniss = zahl1 / zahl2;
}// end second if
if ( opperanten[1].equals("+")) {
ergebniss = zahl1 + zahl2;
}// end third if
else if ( opperanten[1].equals("-")) {
ergebniss = zahl1 - zahl2;
}// end 4. if
z =""+ergebniss ;
return z;
}
}