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<>(); tokenlist = new List<>();
Scanner input = new Scanner(System.in); 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(); String eingabe = input.nextLine();
input.close(); input.close();
@@ -45,7 +45,7 @@ public class Rechenmaschine {
int state = 0; int state = 0;
String currentToken = ""; String currentToken = "";
for( char buchstabe: eingabe ) { for( char buchstabe : eingabe ) {
switch( state ) { switch( state ) {
case 0: case 0:
switch( buchstabe ) { switch( buchstabe ) {
@@ -68,7 +68,8 @@ public class Rechenmaschine {
break; break;
case '+': 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; return false;
default: default:
@@ -81,9 +82,10 @@ public class Rechenmaschine {
case 1: case 1:
switch( buchstabe ) { switch( buchstabe ) {
case '+': 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", "" + buchstabe));
state = 0; state = 0;
break; break;
@@ -111,12 +113,13 @@ public class Rechenmaschine {
case 2: case 2:
switch( buchstabe ) { switch( buchstabe ) {
case '+': case '+':
tokenlist.append(new Token("OPERATOR")); case '-':
tokenlist.append(new Token("OPERATOR", "" + buchstabe));
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 Operator folgen!";
return false; return false;
} }
break; break;
@@ -124,7 +127,7 @@ public class Rechenmaschine {
} }
if( state == 0 ) { 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; return false;
} else { } else {
tokenlist.append(new Token("OPERAND", currentToken)); tokenlist.append(new Token("OPERAND", currentToken));
@@ -184,9 +187,18 @@ public class Rechenmaschine {
tokenlist.toFirst(); tokenlist.toFirst();
while( tokenlist.hasAccess() ) { while( tokenlist.hasAccess() ) {
Token currentToken = tokenlist.getContent(); Token currentToken = tokenlist.getContent();
if( currentToken.getType().equals("OPERAND") ) { if (currentToken.getType().equals("OPERATOR")) {
result += Integer.parseInt(currentToken.getToken()); switch (currentToken.getToken()) {
case "+":
tokenlist.next();
result += Integer.parseInt(currentToken.getToken());
break;
case "-":
tokenlist.next();
result -= Integer.parseInt(currentToken.getToken());
break;
}
} }
tokenlist.next(); tokenlist.next();

View File

@@ -1,35 +1,33 @@
public class Token { public class Token {
private String type; private String type;
private String token;
private String token;
public Token(String pType) {
public Token(String pType) { type = pType;
type = pType;
token = null; token = null;
} }
public Token(String pType, String pToken) { public Token(String pType, String pToken) {
type = pType; type = pType;
token = pToken; token = pToken;
} }
public String getType() { public String getType() {
return type; return type;
} }
public void setType(String pType) { public void setType(String pType) {
type = pType; type = pType;
} }
public String getToken() { public String getToken() {
return token; return token;
} }
public void setToken(String pToken) { public void setToken(String pToken) {
token = pToken; token = pToken;
} }
} }

View File

@@ -5,22 +5,22 @@ 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=1000
editor.fx.0.width=816 editor.fx.0.width=1296
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.8690344062153164
package.editor.height=731 package.editor.height=776
package.editor.width=1157 package.editor.width=1145
package.editor.x=100 package.editor.x=0
package.editor.y=25 package.editor.y=0
package.frame.height=875 package.frame.height=1000
package.frame.width=1296 package.frame.width=1296
package.numDependencies=2 package.numDependencies=2
package.numTargets=3 package.numTargets=4
package.showExtends=true package.showExtends=true
package.showUses=true package.showUses=true
project.charset=UTF-8 project.charset=UTF-8
@@ -30,12 +30,12 @@ readme.width=47
readme.x=10 readme.x=10
readme.y=10 readme.y=10
target1.height=50 target1.height=50
target1.name=List target1.name=List$ListNode
target1.showInterface=false target1.showInterface=false
target1.type=ClassTarget target1.type=SubTargetClassRole
target1.width=130 target1.width=200
target1.x=300 target1.x=700
target1.y=70 target1.y=140
target2.height=50 target2.height=50
target2.name=Token target2.name=Token
target2.showInterface=false target2.showInterface=false
@@ -44,9 +44,16 @@ target2.width=80
target2.x=70 target2.x=70
target2.y=70 target2.y=70
target3.height=50 target3.height=50
target3.name=Rechenmaschine target3.name=List
target3.showInterface=false target3.showInterface=false
target3.type=ClassTarget target3.type=ClassTarget
target3.width=120 target3.width=150
target3.x=170 target3.x=440
target3.y=210 target3.y=220
target4.height=50
target4.name=Rechenmaschine
target4.showInterface=false
target4.type=ClassTarget
target4.width=130
target4.x=210
target4.y=350