Compiler-Fehler Basic- Taschenrechner/ Fehler

shimsho

Mitglied
Java:
public class Taschenrechner {
    
    /*
     * Diese Methode soll a und b nach dem arithmetischen Symbol zeichen berechnen.
     * rechne(3, 5, "+") --> 8
     * rechne(10,5, "-") --> 5
     * Als a und b werden dabei beliebige int Werte übergeben, zeichen ist eins der folgenden Zeichen:
     * +,-,*,/
     *
     * Die Zeichen können mit der Methode boolean String.equals(String) verglichen werden.
     * zB:
     * "abc".equals("abc") gibt true zurueck, zeichen.equals("potenz") gibt nur dann
     * true zurueck, wenn zeichen tatsaechlich die Zeichenkette "potenz" enthaelt,
     * sonst false.
     *
     * Die Methode soll also bei zeichen = "+" a und b addieren, bei zeichen = "-"
     * b von a subtrahieren, bei "*" a und b multiplizieren, und bei "/" a durch b dividieren.
     */
    public static int rechne(int a, int b, String zeichen)
    {
      zeichen ="+,-,*,/";
      
     return rechne(a,b,"+,-,*,/");
    
             }
    
    /*
     * hier kann die Methode getestet werden.
     * Aendern Sie den Code wie Sie es fuer Ihre Tests fuer notwendig halten
     */
    public static  void main(String[] args) {
        int a = 3;
        int b = 5;
        
    
        
        System.out.println("Das Ergebnis von "  + a  + " + " + b +
                " sollte " + (a+b) + " sein.\nDein Ergebnis ist " +
                "            " + rechne(a, b, "+"));
        System.out.println("Das Ergebnis von "  + a  + " - " + b +
                " sollte " + (a-b) + " sein.\nDein Ergebnis ist " +
                "            " + rechne(a, b, "-"));
        System.out.println("Das Ergebnis von "  + a  + " * " + b +
                " sollte " + (a*b) + " sein.\nDein Ergebnis ist " +
                "            " + rechne(a, b, "*"));
        System.out.println("Das Ergebnis von "  + a  + " / " + b +
                " sollte " + (a/b) + " sein.\nDein Ergebnis ist " +
                "            " + rechne(a, b, "/"));
        }
}
 
Da befürchtest Du richtig 🙂 Du hast jetzt eine Endlosrekursion (die Methode ruft sich so lange selbst auf, bis der Stack voll ist: Stack Overflow)

Du willst etwas wie:
Java:
public static int rechne(int a, int b, String zeichen)
    switch(zeichen) {
        case "+": return a + b;
        case "-": return a- b;
        ...
    }
 
Habe mich mal rangemacht, das komplizierteste war der Javadoc: 😀
Java:
public class Taschenrechner {

    /**
     * Diese Methode soll a und b nach dem arithmetischen Symbol zeichen
     * berechnen. rechne(3, 5, "+") --> 8, rechne(10,5, "-") --> 5. Als a und b
     * werden dabei beliebige int Werte übergeben, zeichen ist eins der
     * folgenden Zeichen: +,-,*,/. Die Zeichen können mit der Methode boolean
     * String.equals(String) verglichen werden. zB: "abc".equals("abc") gibt
     * true zurueck, zeichen.equals("potenz") gibt nur dann true zurueck, wenn
     * zeichen tatsaechlich die Zeichenkette "potenz" enthaelt, sonst false.
     *
     * Die Methode soll also bei zeichen = "+" a und b addieren, bei zeichen =
     * "-" b von a subtrahieren, bei "*" a und b multiplizieren, und bei "/" a
     * durch b dividieren.
     *
     * @param a the 1st Operand
     * @param b the 2nd Operand
     * @param zeichen the Operator Character
     * @return The calculation of a zeichen b.
     */
    public static int rechne(int a, int b, String zeichen) {
        switch (zeichen) {
            case "+":
                return a + b;
            case "-":
                return a - b;
            case "*":
                return a * b;
            case "/":
                return a / b;
            default:
                throw new AssertionError();
        }
    }

    /*
     * hier kann die Methode getestet werden.
     * Aendern Sie den Code wie Sie es fuer Ihre Tests fuer notwendig halten
     */
    public static void main(String[] args) {
        int a = 3;
        int b = 5;
        /* TODO */
        System.out.println("Das Ergebnis von " + a + " + " + b + " sollte " + (a + b) + " sein.\n"
                         + "Dein Ergebnis ist " + rechne(a, b, "+"));
        System.out.println("Das Ergebnis von " + a + " - " + b + " sollte " + (a - b) + " sein.\n"
                         + "Dein Ergebnis ist " + rechne(a, b, "-"));
        System.out.println("Das Ergebnis von " + a + " * " + b + " sollte " + (a * b) + " sein.\n"
                         + "Dein Ergebnis ist " + rechne(a, b, "*"));
        System.out.println("Das Ergebnis von " + a + " / " + b + " sollte " + (a / b) + " sein.\n"
                         + "Dein Ergebnis ist " + rechne(a, b, "/"));
    }
}


und der Javadoc schaut dann so:
Method Detail

rechne

public static int rechne(int a, int b, String zeichen)

Diese Methode soll a und b nach dem arithmetischen Symbol zeichen berechnen. rechne(3, 5, "+") --> 8, rechne(10,5, "-") --> 5. Als a und b werden dabei beliebige int Werte übergeben, zeichen ist eins der folgenden Zeichen: +,-,*,/. Die Zeichen können mit der Methode boolean String.equals(String) verglichen werden. zB: "abc".equals("abc") gibt true zurueck, zeichen.equals("potenz") gibt nur dann true zurueck, wenn zeichen tatsaechlich die Zeichenkette "potenz" enthaelt, sonst false.

Die Methode soll also bei zeichen = "+" a und b addieren, bei zeichen = "-" b von a subtrahieren, bei "*" a und b multiplizieren, und bei "/" a durch b dividieren.

Parameters:
a - the 1st Operand
b - the 2nd Operand
zeichen - the Operator Character

Returns:
The calculation of a zeichen b.
 

Zurück
Oben