Methoden Nutzung der Werte einer ausgeführten Objektmethode in anderen Objektmethoden

Hansebas

Mitglied
Moin,
ich probiere mich gerade am Aufruf von Methoden. Dies am Beispiel eines Taschenrechners.
Ich habe für jeden Schritt eine eigene Objektmethode geschrieben und möchte diese dann in der main-methode ausführen lassen.

Ich möchte, dass die Methode "ausrechnen" mir nach Eingabe der Parameter, das entsprechende Ergebnis ausgibt. Hier liegt mein Hauptproblem. Wie kann ich die Ergebnisse der ersten drei Methoden (ersteeingabe, zweiteeingabe, operation) ansteuern, ohne die Methoden selbst noch einmal aufzurufen?

Mein zweites Problem ist, ich muss im switch als Selektor die Methode "operation" auswählen, möchte aber eigentlich, dass das Ergebnis der methode "operation" (also der return-Wert) im switch als Selektor angeben.

Ziel diese Übung ist es, alle Methoden in der main einzeln anzusteuern. Dann muss ich die Eingaben aber mehrmals machen. Führe ich in der main-Methode nur die Objektmethode "ausrechnen" aus, klappt es zwar, aber nur bedingt. Da logischerweise die Methoden dann sequentiell ausgeführt werden. Also,
1. operation
2. ersteeingabe
3. zweiteeingabe

Ziel ist aber,
1. ersteeingabe
2. zweiteeingabe
3. operation

Java:
import java.util.Scanner;
public class Taschenrechner {
 
 ///eingabe1
 public static int ersteeingabe() {
  int a;
  System.out.print("Eingabe der ersten Zahl:");
  Scanner ersteeingabe1 = new Scanner(System.in);
  a = ersteeingabe1.nextInt();
  return a;
 }
 //eingabe2
 public static int zweiteeingabe() {
  int b;
  System.out.print("Eingabe der zweiten Zahl:");
  Scanner zweiteeingabe1 = new Scanner(System.in);
  b = zweiteeingabe1.nextInt();
  return b;
 }
 // eingabe operand
 public static String operation() {
  String op;
  System.out.print("Eingabe des Operanten:");
  Scanner dritteeingabe1 = new Scanner(System.in);
  op = dritteeingabe1.next();
  return op;
 }
 //methode ausrechnen
 public static void ausrechnen() {
 int ergebnis;
 switch (operation()) {
 case "+":
  ergebnis = ersteeingabe() + zweiteeingabe();
  System.out.println(ergebnis);
  break;
 case "-":
  ergebnis = ersteeingabe() - zweiteeingabe();
  System.out.println(ergebnis);
  break;
 }
 }
 public static void main(String[] args) {
  ersteeingabe();
  zweiteeingabe();
  operation();
  ausrechnen();
 }
}
 
Wie kann ich die Ergebnisse der ersten drei Methoden (ersteeingabe, zweiteeingabe, operation) ansteuern, ohne die Methoden selbst noch einmal aufzurufen?
Indem Du Deiner ausrechnen-Methode ein paar Parameter spendierst:
Java:
public static void ausrechnen(int ersteZahl, int zweiteZahl, String operation) {
...
Die Methodenaufrufe von ersteeingabe(), zweiteeingabe() und operation() musst Du dann lediglich durch die Parameter ersetzen.

In Deiner main-Methode sieht es dann so aus:
Java:
public static void main(String[] args) {
    int erste = ersteeingabe();
    int zweite = zweiteeingabe();
    String op = operation();
    ausrechnen(erste, zweite, op);
}

Ich habe für jeden Schritt eine eigene Objektmethode geschrieben
Nein, Du hast Klassenmethoden geschrieben 🙂
 
Hier mal ein Beispiel, das ein Taschenrechner-Objekt verwendet:
Java:
import java.util.Scanner;

public class Taschenrechner {
    private Scanner sc = new Scanner(System.in);
    private int ersteZahl;
    private int zweiteZahl;
    private String operation;

    public void ausfuehren() {
        ersteZahl = liesZahl("Eingabe der ersten Zahl: ");
        zweiteZahl = liesZahl("Eingabe der zweiten Zahl: ");
        operation = liesString("Eingabe des Operanden: ");
        System.out.println(ergebnis());
    }

    private int liesZahl(String prompt) {
        System.out.print(prompt);
        int ergebnis = sc.nextInt();
        sc.nextLine(); // Zeilenende auslesen
        return ergebnis;
    }

    private String liesString(String prompt) {
        System.out.print(prompt);
        return sc.nextLine();
    }

    // methode ausrechnen
    private int ergebnis() {
        int ergebnis;
        switch (operation) {
        case "+":
            ergebnis = ersteZahl + zweiteZahl;
            break;
        case "-":
            ergebnis = ersteZahl - zweiteZahl;
            break;
        default:
            throw new IllegalStateException("Ungültiger Operand \"" + operation + "\"");
        }
        return ergebnis;
    }

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

Zurück
Oben