forked from IF-LK-2020/rechenmaschine
Implemented Subtraction
This commit is contained in:
@@ -48,78 +48,87 @@ public class Rechenmaschine {
|
||||
for( char buchstabe: eingabe ) {
|
||||
switch( state ) {
|
||||
case 0:
|
||||
switch( buchstabe ) {
|
||||
case '0':
|
||||
tokenlist.append(new Token("OPERAND", "0"));
|
||||
state = 2;
|
||||
break;
|
||||
|
||||
case '1':
|
||||
case '2':
|
||||
case '3':
|
||||
case '4':
|
||||
case '5':
|
||||
case '6':
|
||||
case '7':
|
||||
case '8':
|
||||
case '9':
|
||||
currentToken += buchstabe;
|
||||
state = 1;
|
||||
break;
|
||||
|
||||
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!";
|
||||
return false;
|
||||
}
|
||||
switch( buchstabe ) {
|
||||
case '0':
|
||||
tokenlist.append(new Token("OPERAND", "0"));
|
||||
state = 2;
|
||||
break;
|
||||
|
||||
case '1':
|
||||
case '2':
|
||||
case '3':
|
||||
case '4':
|
||||
case '5':
|
||||
case '6':
|
||||
case '7':
|
||||
case '8':
|
||||
case '9':
|
||||
currentToken += buchstabe;
|
||||
state = 1;
|
||||
break;
|
||||
|
||||
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!";
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
switch( buchstabe ) {
|
||||
case '+':
|
||||
tokenlist.append(new Token("OPERAND", currentToken));
|
||||
currentToken = "";
|
||||
tokenlist.append(new Token("OPERATOR"));
|
||||
state = 0;
|
||||
break;
|
||||
switch( buchstabe ) {
|
||||
case '+':
|
||||
tokenlist.append(new Token("OPERAND", currentToken));
|
||||
currentToken = "";
|
||||
tokenlist.append(new Token("OPERATOR", "+"));
|
||||
state = 0;
|
||||
break;
|
||||
case '-':
|
||||
tokenlist.append(new Token("OPERAND", currentToken));
|
||||
currentToken = "";
|
||||
tokenlist.append(new Token("OPERATOR", "-"));
|
||||
state = 0;
|
||||
break;
|
||||
|
||||
case '0':
|
||||
case '1':
|
||||
case '2':
|
||||
case '3':
|
||||
case '4':
|
||||
case '5':
|
||||
case '6':
|
||||
case '7':
|
||||
case '8':
|
||||
case '9':
|
||||
currentToken += buchstabe;
|
||||
state = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
fehler = "Fehler im Wort " +pEingabe+ ":\nDer Buchstabe " + buchstabe + " gehört nicht zur Sprache!";
|
||||
return false;
|
||||
}
|
||||
case '0':
|
||||
case '1':
|
||||
case '2':
|
||||
case '3':
|
||||
case '4':
|
||||
case '5':
|
||||
case '6':
|
||||
case '7':
|
||||
case '8':
|
||||
case '9':
|
||||
currentToken += buchstabe;
|
||||
state = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
fehler = "Fehler im Wort " +pEingabe+ ":\nDer Buchstabe " + buchstabe + " gehört nicht zur Sprache!";
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
switch( buchstabe ) {
|
||||
case '+':
|
||||
tokenlist.append(new Token("OPERATOR"));
|
||||
state = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
fehler = "Fehler im Wort " +pEingabe+ ":\nNach 0 am Anfang muss ein + folgen!";
|
||||
return false;
|
||||
}
|
||||
switch( buchstabe ) {
|
||||
case '+':
|
||||
tokenlist.append(new Token("OPERATOR","+"));
|
||||
state = 0;
|
||||
break;
|
||||
case '-':
|
||||
tokenlist.append(new Token("OPERATOR","-"));
|
||||
state = 0;
|
||||
break;
|
||||
default:
|
||||
fehler = "Fehler im Wort " +pEingabe+ ":\nNach 0 am Anfang muss ein + oder ein - folgen!";
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,29 +151,28 @@ public class Rechenmaschine {
|
||||
|
||||
switch( state ) {
|
||||
case 0:
|
||||
if( currentToken.getType().equals("OPERATOR") ) {
|
||||
fehler = "Rechenterm darf nicht mit einem Operator starten!";
|
||||
return false;
|
||||
} else if( currentToken.getType().equals("OPERAND") ) {
|
||||
state = 1;
|
||||
} else {
|
||||
fehler = "Unbekanntes Token: "+currentToken.getType();
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
||||
if( currentToken.getType().equals("OPERATOR") ) {
|
||||
fehler = "Rechenterm darf nicht mit einem Operator starten!";
|
||||
return false;
|
||||
} else if( currentToken.getType().equals("OPERAND") ) {
|
||||
state = 1;
|
||||
} else {
|
||||
fehler = "Unbekanntes Token: "+currentToken.getType();
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if( currentToken.getType().equals("OPERATOR") ) {
|
||||
state = 0;
|
||||
} else if( currentToken.getType().equals("OPERAND") ) {
|
||||
fehler = "Auf einen Operanden muss ein Operator folgen!";
|
||||
return false;
|
||||
} else {
|
||||
fehler = "Unbekanntes Token: "+currentToken.getType();
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
if( currentToken.getType().equals("OPERATOR") ) {
|
||||
state = 0;
|
||||
} else if( currentToken.getType().equals("OPERAND") ) {
|
||||
fehler = "Auf einen Operanden muss ein Operator folgen!";
|
||||
return false;
|
||||
} else {
|
||||
fehler = "Unbekanntes Token: "+currentToken.getType();
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
tokenlist.next();
|
||||
@@ -180,15 +188,25 @@ public class Rechenmaschine {
|
||||
|
||||
public void run() {
|
||||
result = 0;
|
||||
|
||||
int state = 0;
|
||||
tokenlist.toFirst();
|
||||
while( tokenlist.hasAccess() ) {
|
||||
Token currentToken = tokenlist.getContent();
|
||||
|
||||
if( currentToken.getType().equals("OPERAND") ) {
|
||||
result += Integer.parseInt(currentToken.getToken());
|
||||
if( currentToken.getType().equals("OPERATOR")){
|
||||
if(currentToken.getToken().equals("+")){
|
||||
state = 0;
|
||||
} else if(currentToken.getToken().equals("-")){
|
||||
state = 1;
|
||||
}
|
||||
}
|
||||
else if( currentToken.getType().equals("OPERAND") ) {
|
||||
if(state == 0){
|
||||
result += Integer.parseInt(currentToken.getToken()); //Konvertiert den String in ein Integer und rechnet es dem Result hinzu
|
||||
}
|
||||
else if(state == 1){
|
||||
result -= Integer.parseInt(currentToken.getToken()); //Konvertiert den String in ein Integer und zieht es dem Result ab
|
||||
}
|
||||
}
|
||||
|
||||
tokenlist.next();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user