forked from IF-LK-2020/rechenmaschine
minus (noch fehlerhaft)
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user