forked from IF-LK-2020/rechenmaschine
Implemented Subtraction
This commit is contained in:
@@ -70,20 +70,27 @@ public class Rechenmaschine {
|
|||||||
case '+':
|
case '+':
|
||||||
fehler = "Fehler im Wort " +pEingabe+ ":\nDas Wort darf nicht mit + beginnen!";
|
fehler = "Fehler im Wort " +pEingabe+ ":\nDas Wort darf nicht mit + beginnen!";
|
||||||
return false;
|
return false;
|
||||||
|
case '-':
|
||||||
|
fehler = "Fehler im Wort " +pEingabe+ ":\nDas Wort darf nicht mit - beginnen!";
|
||||||
|
return false;
|
||||||
default:
|
default:
|
||||||
fehler = "Fehler im Wort " +pEingabe+ ":\nDer Buchstabe " + buchstabe + " gehört nicht zur Sprache!";
|
fehler = "Fehler im Wort " +pEingabe+ ":\nDer Buchstabe " + buchstabe + " gehört nicht zur Sprache!";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
switch( buchstabe ) {
|
switch( buchstabe ) {
|
||||||
case '+':
|
case '+':
|
||||||
tokenlist.append(new Token("OPERAND", currentToken));
|
tokenlist.append(new Token("OPERAND", currentToken));
|
||||||
currentToken = "";
|
currentToken = "";
|
||||||
tokenlist.append(new Token("OPERATOR"));
|
tokenlist.append(new Token("OPERATOR", "+"));
|
||||||
|
state = 0;
|
||||||
|
break;
|
||||||
|
case '-':
|
||||||
|
tokenlist.append(new Token("OPERAND", currentToken));
|
||||||
|
currentToken = "";
|
||||||
|
tokenlist.append(new Token("OPERATOR", "-"));
|
||||||
state = 0;
|
state = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -107,16 +114,18 @@ public class Rechenmaschine {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
switch( buchstabe ) {
|
switch( buchstabe ) {
|
||||||
case '+':
|
case '+':
|
||||||
tokenlist.append(new Token("OPERATOR"));
|
tokenlist.append(new Token("OPERATOR","+"));
|
||||||
|
state = 0;
|
||||||
|
break;
|
||||||
|
case '-':
|
||||||
|
tokenlist.append(new Token("OPERATOR","-"));
|
||||||
state = 0;
|
state = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
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 ein - folgen!";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -153,7 +162,6 @@ public class Rechenmaschine {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
if( currentToken.getType().equals("OPERATOR") ) {
|
if( currentToken.getType().equals("OPERATOR") ) {
|
||||||
state = 0;
|
state = 0;
|
||||||
@@ -180,15 +188,25 @@ public class Rechenmaschine {
|
|||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
result = 0;
|
result = 0;
|
||||||
|
int state = 0;
|
||||||
tokenlist.toFirst();
|
tokenlist.toFirst();
|
||||||
while( tokenlist.hasAccess() ) {
|
while( tokenlist.hasAccess() ) {
|
||||||
Token currentToken = tokenlist.getContent();
|
Token currentToken = tokenlist.getContent();
|
||||||
|
if( currentToken.getType().equals("OPERATOR")){
|
||||||
if( currentToken.getType().equals("OPERAND") ) {
|
if(currentToken.getToken().equals("+")){
|
||||||
result += Integer.parseInt(currentToken.getToken());
|
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();
|
tokenlist.next();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,18 +5,18 @@ dependency1.type=UsesDependency
|
|||||||
dependency2.from=Rechenmaschine
|
dependency2.from=Rechenmaschine
|
||||||
dependency2.to=Token
|
dependency2.to=Token
|
||||||
dependency2.type=UsesDependency
|
dependency2.type=UsesDependency
|
||||||
editor.fx.0.height=738
|
editor.fx.0.height=1416
|
||||||
editor.fx.0.width=816
|
editor.fx.0.width=2576
|
||||||
editor.fx.0.x=466
|
editor.fx.0.x=-8
|
||||||
editor.fx.0.y=146
|
editor.fx.0.y=-8
|
||||||
objectbench.height=66
|
objectbench.height=111
|
||||||
objectbench.width=1256
|
objectbench.width=1256
|
||||||
package.divider.horizontal=0.6
|
package.divider.horizontal=0.6
|
||||||
package.divider.vertical=0.9099876695437731
|
package.divider.vertical=0.847741935483871
|
||||||
package.editor.height=731
|
package.editor.height=650
|
||||||
package.editor.width=1157
|
package.editor.width=1145
|
||||||
package.editor.x=100
|
package.editor.x=410
|
||||||
package.editor.y=25
|
package.editor.y=334
|
||||||
package.frame.height=875
|
package.frame.height=875
|
||||||
package.frame.width=1296
|
package.frame.width=1296
|
||||||
package.numDependencies=2
|
package.numDependencies=2
|
||||||
@@ -33,8 +33,8 @@ target1.height=50
|
|||||||
target1.name=List
|
target1.name=List
|
||||||
target1.showInterface=false
|
target1.showInterface=false
|
||||||
target1.type=ClassTarget
|
target1.type=ClassTarget
|
||||||
target1.width=130
|
target1.width=150
|
||||||
target1.x=300
|
target1.x=450
|
||||||
target1.y=70
|
target1.y=70
|
||||||
target2.height=50
|
target2.height=50
|
||||||
target2.name=Token
|
target2.name=Token
|
||||||
@@ -47,6 +47,6 @@ target3.height=50
|
|||||||
target3.name=Rechenmaschine
|
target3.name=Rechenmaschine
|
||||||
target3.showInterface=false
|
target3.showInterface=false
|
||||||
target3.type=ClassTarget
|
target3.type=ClassTarget
|
||||||
target3.width=120
|
target3.width=130
|
||||||
target3.x=170
|
target3.x=220
|
||||||
target3.y=210
|
target3.y=180
|
||||||
|
|||||||
Reference in New Issue
Block a user