Aufgabe 2 Minus Terme

This commit is contained in:
2021-04-13 19:03:42 +02:00
parent bdfd32c24a
commit 6a7344379a
2 changed files with 33 additions and 22 deletions

View File

@@ -70,6 +70,9 @@ public class Rechenmaschine {
case '+':
fehler = "Fehler im Wort " +pEingabe+ ":\nDas Wort darf nicht mit + beginnen!";
return false;
case '-':
fehler = "Fehler im Wort " +pEingabe+ ":\nDas Wort darf nicht mit - beginnen!";
return false;
default:
fehler = "Fehler im Wort " +pEingabe+ ":\nDer Buchstabe " + buchstabe + " gehört nicht zur Sprache!";
@@ -81,9 +84,10 @@ public class Rechenmaschine {
case 1:
switch( buchstabe ) {
case '+':
case '-':
tokenlist.append(new Token("OPERAND", currentToken));
currentToken = "";
tokenlist.append(new Token("OPERATOR"));
tokenlist.append(new Token("OPERATOR",Character.toString(buchstabe)));
state = 0;
break;
@@ -111,12 +115,13 @@ public class Rechenmaschine {
case 2:
switch( buchstabe ) {
case '+':
tokenlist.append(new Token("OPERATOR"));
case '-':
tokenlist.append(new Token("OPERATOR",Character.toString(buchstabe)));
state = 0;
break;
default:
fehler = "Fehler im Wort " +pEingabe+ ":\nNach 0 am Anfang muss ein + folgen!";
fehler = "Fehler im Wort " +pEingabe+ ":\nNach 0 am Anfang muss ein + oder - folgen!";
return false;
}
break;
@@ -124,7 +129,7 @@ public class Rechenmaschine {
}
if( state == 0 ) {
fehler = "Fehler im Wort " +pEingabe+ ":\nDas Wort darf nicht auf + enden!";
fehler = "Fehler im Wort " +pEingabe+ ":\nDas Wort darf nicht auf + oder - enden!";
return false;
} else {
tokenlist.append(new Token("OPERAND", currentToken));
@@ -182,13 +187,19 @@ public class Rechenmaschine {
result = 0;
tokenlist.toFirst();
String previous="";
while( tokenlist.hasAccess() ) {
Token currentToken = tokenlist.getContent();
if( currentToken.getType().equals("OPERAND") ) {
result += Integer.parseInt(currentToken.getToken());
if(currentToken.getType().equals("OPERATOR")){
previous=currentToken.getToken();
}
if( currentToken.getType().equals("OPERAND") ) {
if(previous.equals("+")||previous.equals("")){
result += Integer.parseInt(currentToken.getToken());
} else {
result -= Integer.parseInt(currentToken.getToken());
}
}
tokenlist.next();
}
}