minus (noch fehlerhaft)

This commit is contained in:
Tim
2021-04-14 13:32:04 +02:00
parent bdfd32c24a
commit 7f5f904a72
3 changed files with 73 additions and 56 deletions

View File

@@ -19,7 +19,7 @@ public class Rechenmaschine {
tokenlist = new List<>();
Scanner input = new Scanner(System.in);
System.out.println("Gib einen Plusterm ein und bestätige mit ENTER: ");
System.out.println("Gib einen Plus-/Minusterm ein und bestätige mit ENTER: ");
String eingabe = input.nextLine();
input.close();
@@ -45,7 +45,7 @@ public class Rechenmaschine {
int state = 0;
String currentToken = "";
for( char buchstabe: eingabe ) {
for( char buchstabe : eingabe ) {
switch( state ) {
case 0:
switch( buchstabe ) {
@@ -68,7 +68,8 @@ public class Rechenmaschine {
break;
case '+':
fehler = "Fehler im Wort " +pEingabe+ ":\nDas Wort darf nicht mit + beginnen!";
case '-':
fehler = "Fehler im Wort " +pEingabe+ ":\nDas Wort darf nicht mit " + buchstabe + " beginnen!";
return false;
default:
@@ -81,9 +82,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", "" + buchstabe));
state = 0;
break;
@@ -111,12 +113,13 @@ public class Rechenmaschine {
case 2:
switch( buchstabe ) {
case '+':
tokenlist.append(new Token("OPERATOR"));
case '-':
tokenlist.append(new Token("OPERATOR", "" + 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 Operator folgen!";
return false;
}
break;
@@ -124,7 +127,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 einen Operator enden!";
return false;
} else {
tokenlist.append(new Token("OPERAND", currentToken));
@@ -184,9 +187,18 @@ public class Rechenmaschine {
tokenlist.toFirst();
while( tokenlist.hasAccess() ) {
Token currentToken = tokenlist.getContent();
if( currentToken.getType().equals("OPERAND") ) {
result += Integer.parseInt(currentToken.getToken());
if (currentToken.getType().equals("OPERATOR")) {
switch (currentToken.getToken()) {
case "+":
tokenlist.next();
result += Integer.parseInt(currentToken.getToken());
break;
case "-":
tokenlist.next();
result -= Integer.parseInt(currentToken.getToken());
break;
}
}
tokenlist.next();