Hallo,
Wenn ich mit mehreren Zahlen rechnen will, rechnet das Programm nur die letzten 2 Zahlen, das gleiche auch bei der Methode mit Kommazahl.
Ich denke nach dem erster Operation sollte das Ergebnis gespeichert werden und für die nächste Operation wiedergegeben werden, jedoch weiß ich nicht wie ich vorgehen soll.
Irgentwelche Vorschläge?
Wenn ich mit mehreren Zahlen rechnen will, rechnet das Programm nur die letzten 2 Zahlen, das gleiche auch bei der Methode mit Kommazahl.
Ich denke nach dem erster Operation sollte das Ergebnis gespeichert werden und für die nächste Operation wiedergegeben werden, jedoch weiß ich nicht wie ich vorgehen soll.
Irgentwelche Vorschläge?
Java:
public class Calculator {
private String screen = "0";
private double latestValue;
private String latestOperation = "";
public String readScreen() {
return screen;
}
public void pressDigitKey(int digit) {
if(digit > 9 || digit < 0) throw new IllegalArgumentException();
if(screen.equals("0")){
screen = String.valueOf(digit);
}else{
if(latestOperation.isEmpty()) {
screen = screen + digit;
} else {
latestValue = Double.parseDouble(screen);
screen = Integer.toString(digit);
}
}
}
public void pressClearKey() {
screen = "0";
latestOperation = "";
latestValue = 0.0;
}
public void pressOperationKey(String operation) {
latestOperation = operation;
}
public void pressDotKey() {
if(!screen.endsWith(".")) screen = screen + ".";
}
public void pressNegative() {
screen = screen.startsWith("-") ? screen.substring(1) : "-";
}
public void pressEquals() {
var result = switch(latestOperation) {
case "+" -> latestValue + Double.parseDouble(screen);
case "-" -> latestValue - Double.parseDouble(screen);
case "x" -> latestValue * Double.parseDouble(screen);
case "/" -> latestValue / Double.parseDouble(screen);
default -> throw new IllegalArgumentException();
};
screen = Double.toString(result);
if(screen.endsWith(".0")) screen = screen.substring(0,screen.length()-2);
}
}
Java:
void calculatorCanDoTwoMinusTwo() {
Calculator calc = new Calculator();
calc.pressDigitKey(3);
calc.pressOperationKey("+");
calc.pressDigitKey(7);
calc.pressOperationKey("/");
calc.pressDigitKey(2);
calc.pressEquals();
assertEquals("5", calc.readScreen());
}
void calculatorCanDoDots() {
Calculator calc = new Calculator();
calc.pressDigitKey(1);
calc.pressDotKey();
calc.pressDigitKey(2);
calc.pressOperationKey("+");
calc.pressDigitKey(3);
calc.pressDotKey();
calc.pressDigitKey(4);
calc.pressEquals();
assertEquals("4.6", calc.readScreen());