forked from IF-LK-2020/rechenmaschine
Compare commits
2 Commits
8debe58032
...
d531bf0d4f
Author | SHA1 | Date |
---|---|---|
Artem Didytschuk | d531bf0d4f | |
Artem Didytschuk | 120a36735a |
|
@ -1,5 +1,5 @@
|
|||
import java.util.Scanner;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
/**
|
||||
* Hauptklasse des Projekts
|
||||
*/
|
||||
|
@ -44,7 +44,7 @@ public class Rechenmaschine {
|
|||
}
|
||||
|
||||
run();
|
||||
System.out.println("Ergebnis der Ausführung: " + result);
|
||||
|
||||
}
|
||||
|
||||
public boolean scanne( String pEingabe ) {
|
||||
|
@ -241,7 +241,11 @@ public class Rechenmaschine {
|
|||
currentToken.append(buchstabe);
|
||||
state = 2;
|
||||
}
|
||||
case '+', '-', '*', '/' -> {
|
||||
case '+', '-' -> {
|
||||
tokenlist.append(new Token("OPERATOR",Character.toString(buchstabe)));
|
||||
state = 5;
|
||||
}
|
||||
case '*', '/' -> {
|
||||
System.out.println("Unmittelbar nach ( darf kein Operator oder ) folgen.");
|
||||
return false;
|
||||
}
|
||||
|
@ -292,9 +296,13 @@ public class Rechenmaschine {
|
|||
return false;
|
||||
} else {
|
||||
tokenlist.toLast();
|
||||
if(!tokenlist.getContent().getToken().equals(")")){
|
||||
|
||||
if (tokenlist.hasAccess()) {
|
||||
if (!tokenlist.getContent().getToken().equals(")")) {
|
||||
tokenlist.append(new Token("OPERAND", currentToken.toString()));
|
||||
}
|
||||
} else {
|
||||
tokenlist.append(new Token("OPERAND", currentToken.toString()));
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -317,7 +325,7 @@ public class Rechenmaschine {
|
|||
state = 1;
|
||||
break;
|
||||
} else if( currentToken.getToken().equals("(")){
|
||||
state = 0;
|
||||
state = 2;
|
||||
break;
|
||||
} else if( currentToken.getToken().equals(")")){
|
||||
state = 1;
|
||||
|
@ -341,11 +349,28 @@ public class Rechenmaschine {
|
|||
return false;
|
||||
} else if( currentToken.getToken().equals(")")) {
|
||||
state = 1;
|
||||
break;
|
||||
} else {
|
||||
fehler = "Unbekanntes Token: "+currentToken.getType();
|
||||
return false;
|
||||
}
|
||||
case 2:
|
||||
if( currentToken.getType().equals("OPERATOR") ) {
|
||||
state = 0;
|
||||
break;
|
||||
} else if( currentToken.getType().equals("OPERAND") ) {
|
||||
state = 1;
|
||||
break;
|
||||
} else if( currentToken.getToken().equals("(")){
|
||||
state = 2;
|
||||
break;
|
||||
} else if( currentToken.getToken().equals(")")){
|
||||
state = 1;
|
||||
break;
|
||||
} else {
|
||||
fehler = "Unbekanntes Token: "+currentToken.getType();
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
tokenlist.next();
|
||||
|
@ -412,19 +437,19 @@ public class Rechenmaschine {
|
|||
//Durchlaufe die Tokenliste
|
||||
while(pList.hasAccess()){
|
||||
// Token gleich ( dann entferne ihn
|
||||
if(pList.getContent().getToken().equals("(")){
|
||||
if(pList.getContent().getToken().equals("(")) {
|
||||
pList.remove();
|
||||
//anschließend durchlaufe solange, bis auf ) gestoßen wird
|
||||
while(!pList.getContent().getToken().equals(")")){
|
||||
while (!pList.getContent().getToken().equals(")")) {
|
||||
|
||||
|
||||
//wenn noch nicht am ende der tokenliste
|
||||
if(pList.hasAccess()) {
|
||||
if (pList.hasAccess()) {
|
||||
//wenn ( erneutvorkommt
|
||||
if (pList.getContent().getToken().equals("(") ) {
|
||||
if (pList.getContent().getToken().equals("(")) {
|
||||
// rufe die methode mehrereKlammern auf und speicher das ergebnis als neues Token in newTokenlist
|
||||
berechnet = mehrereKlammern(pList);
|
||||
newTokenlist.append(new Token("OPERAND",String.valueOf(berechnet)));
|
||||
newTokenlist.append(new Token("OPERAND", String.valueOf(berechnet)));
|
||||
}
|
||||
//wenn der Token nicht ) ist dann soll dieser in newTokenlist eingefügt werden und anschließend entfernt werden
|
||||
if (!pList.getContent().getToken().equals(")")) {
|
||||
|
@ -438,7 +463,11 @@ public class Rechenmaschine {
|
|||
//newTokenlist wird ausgerechnet
|
||||
berechnet = berechne(newTokenlist);
|
||||
//und in die Tokenliste eingefügt
|
||||
pList.insert(new Token("OPERAND", String.valueOf(berechnet)));
|
||||
if (pList.hasAccess()) {
|
||||
pList.insert(new Token("OPERAND", String.valueOf(berechnet)));
|
||||
} else {
|
||||
pList.append(new Token("OPERAND", String.valueOf(berechnet)));
|
||||
}
|
||||
newTokenlist = new List<Token>();
|
||||
//hier wurde nun 1 klammer gelöst
|
||||
}
|
||||
|
@ -505,9 +534,10 @@ public class Rechenmaschine {
|
|||
public void run() {
|
||||
klammerRegel(tokenlist);
|
||||
punktVorStrich(tokenlist);
|
||||
result=berechne(tokenlist);
|
||||
|
||||
|
||||
double result=berechne(tokenlist);
|
||||
DecimalFormat format = new DecimalFormat("#,##0.####");
|
||||
String resultString=format.format(result);
|
||||
System.out.println("Ergebnis der Ausführung: " + resultString);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue