Wie entferne ich die Redundanzen

public class Taschenrechner extends Environment {

public static void main(String[] args) {
new Taschenrechner().mainProgram(args);
}

void mainProgram(String[] args) {
int operation;
do{
//Korrekte Eingabe prüfen
do{
System.out.print("Wählen Sie eine Operation: 0 Addition, "

  • „1 Substraktion, 2 Multiplikation, 3 Division, 4 Summe:“);
    operation = stdin.readInt();
    }while ( operation < 0 || operation > 5);

if(operation != 5){
// Summe berechnen
if (operation == 4){
int operand;
//n > 0
do{
System.out.print(„Geben Sie einen Operanden => 0 ein:“);
operand = stdin.readInt();
}while (operand == 0);

int laufvariable = 0;
int summe = 0;
//Summe von 1 bis n
do{
laufvariable++;
summe += laufvariable;
}while (laufvariable < operand);
System.out.print(„Summe:“ + summe);
}

// Andere arthmetische Operationen
//Addition

if (operation == 0){
int operand1;
System.out.print(„Geben Sie den 1. Operanden ein:“);
operand1 = stdin.readInt();
int operand2;
System.out.print(„Geben Sie den 2. Operanden ein:“);
operand2 = stdin.readInt();
int ergebnis = 0;
if (operation == 0){
ergebnis = operand1 + operand2;
}
System.out.print(„Ergebnis:“ + ergebnis );
}
// Substraktion
else{
if (operation == 1){
int operand1;
System.out.print(„Geben Sie den 1. Operanden ein:“);
operand1 = stdin.readInt();
int operand2;
System.out.print(„Geben Sie den 2. Operanden ein:“);
operand2 = stdin.readInt();
int ergebnis = 0;
if (operation == 1){
ergebnis = operand1 - operand2;
}
System.out.print(„Ergebnis:“ + ergebnis );
}

//Multiplikation
else{
if (operation == 2){
int operand1;
System.out.print(„Geben Sie den 1. Operanden ein:“);
operand1 = stdin.readInt();
int operand2;
System.out.print(„Geben Sie den 2. Operanden ein:“);
operand2 = stdin.readInt();
int ergebnis = 0;
if (operation == 2){
ergebnis = operand1 * operand2;
}
System.out.print(„Ergebnis:“ + ergebnis );
}

//Division
else{
if (operation == 3){
int operand1;
System.out.print(„Geben Sie den 1. Operanden ein:“);
operand1 = stdin.readInt();
int operand2;
do{
System.out.print(„Geben Sie den 2. Operanden ein:“);
operand2 = stdin.readInt();
}while (operand2 <= 0);
int ergebnis = 0;
if (operation == 3){
ergebnis = operand1 / operand2;
}
System.out.print(„Ergebnis:“ + ergebnis );
}
}
}
}
}
}while(operation != 5);
}
}

Gaaaanz vorsichtig!

Hallo grußloser Christian!

Also zunächst: Das Posting von dir sollte in das Brett verschoben werden, dass der Sprache gewidmet ist, in der programmierst. Scheint c++ zu sein, oder? (Ach nee, Java!)

Und zu deiner Frage aus der Überschrift: Was meinst du mit Redundanzen? Ich habe schin in einer paar Sprachen programmiert, aber das sagt mit garnichts! Oder gibt es irgendwo eine Stelle wo es hakt? Dann zeig sie uns.

fg

Dirk.P
(das und ein Hallo im Posting sind immer gerne gesehen!)

Na gut dann erst mal Guten Abend an alle :smile:

Ich soll das alles in einem befehl zusammenfassen

if (operation == 0){
int operand1;
System.out.print(„Geben Sie den 1. Operanden ein:“);
operand1 = stdin.readInt();
int operand2;
System.out.print(„Geben Sie den 2. Operanden ein:“);
operand2 = stdin.readInt();
int ergebnis = 0;
if (operation == 0){
ergebnis = operand1 + operand2;
}
System.out.print(„Ergebnis:“ + ergebnis );
}
// Substraktion
else{
if (operation == 1){
int operand1;
System.out.print(„Geben Sie den 1. Operanden ein:“);
operand1 = stdin.readInt();
int operand2;
System.out.print(„Geben Sie den 2. Operanden ein:“);
operand2 = stdin.readInt();
int ergebnis = 0;
if (operation == 1){
ergebnis = operand1 - operand2;
}
System.out.print(„Ergebnis:“ + ergebnis );
}

//Multiplikation
else{
if (operation == 2){
int operand1;
System.out.print(„Geben Sie den 1. Operanden ein:“);
operand1 = stdin.readInt();
int operand2;
System.out.print(„Geben Sie den 2. Operanden ein:“);
operand2 = stdin.readInt();
int ergebnis = 0;
if (operation == 2){
ergebnis = operand1 * operand2;
}
System.out.print(„Ergebnis:“ + ergebnis );
}

Hallo,

Ich soll das alles in einem befehl zusammenfassen

Ich vermute mal es geht um Hausaufgaben. Redundant sind in deinem Code die Zeilen, die sich wiederholen, unabhängig von der auszuführenden Operation. In allen Fällen werden 2 Operanden eingelesen, eine Operation ausgeführt und das Ergebnis ausgegeben. Das einzige worin sich die if-else Blöcke unterscheiden ist die ausgeführte Operation.

Also: erst Operanden einlesen, dann Fallunterscheidung, dann Ergebnis ausgeben.

HTH
Heavy