Punkt vor Strich Regel implementiert

This commit is contained in:
2021-04-17 20:19:53 +02:00
parent cf554d7852
commit fe5920fc36
2 changed files with 34 additions and 6 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 Term ein und bestätige mit ENTER: ");
String eingabe = input.nextLine();
input.close();
@@ -248,9 +248,40 @@ public class Rechenmaschine {
return true;
}
public void punktVorStrich(){
tokenlist.toFirst();
while(tokenlist.hasAccess()){
if(tokenlist.getContent().getToken().equals("*")){
tokenlist.remove();
Double a = Double.parseDouble(tokenlist.getContent().getToken());
tokenlist.current=tokenlist.getPrevious(tokenlist.current);
Double b = Double.parseDouble(tokenlist.getContent().getToken());
tokenlist.remove();
tokenlist.getContent().setToken(String.valueOf(a*b));
} else if(tokenlist.getContent().getToken().equals("/")){
tokenlist.remove();
Double b = Double.parseDouble(tokenlist.getContent().getToken());
//Previous muss gelöscht werden, tokenlist.getContent != null ist,
// wenn der 2. Token am ende des Termes ist.
tokenlist.current=tokenlist.getPrevious(tokenlist.current);
Double a = Double.parseDouble(tokenlist.getContent().getToken());
tokenlist.remove();
tokenlist.getContent().setToken(String.valueOf(a/b));
}
tokenlist.next();
}
}
public void run() {
result = 0;
punktVorStrich();
tokenlist.toFirst();
String previous="";
while( tokenlist.hasAccess() ) {
@@ -262,8 +293,6 @@ public class Rechenmaschine {
switch (previous) {
case "+", "" -> result += Double.parseDouble(currentToken.getToken());
case "-" -> result -= Double.parseDouble(currentToken.getToken());
case "*" -> result *= Double.parseDouble(currentToken.getToken());
default -> result /= Double.parseDouble(currentToken.getToken());
}
}
tokenlist.next();