• Hallo zusammen,

    ich sitz schlepp jetzt schon seit ein paar Tagen diese Aufgabe mit, ich find einfach keine Lösung. Es geht um folgendes:

    Aufgabenstellung:

    Schreiben Sie eine Methode armstrong(n), die true zurückliefert, wenn die Ganzzahl n eine Armstrongzahl ist. Sonst wird false zurückgegeben.

    Und hier mein Code:

    So, das ganze funzt nicht, meine Frage is nun, wie ich es schaffen kann, eine Methode (armstrong(n), wobei n ja eine Ganzzahl sein soll) zu schreiben, die gleichzeitig aber einen boolean zurückgibt.

    Wie geht sowas?

    Falls die Frage hier fehl am Platz is, bitte ich das zu entschuldigen :wein:

    Ich verzweifel bald^^

  • Du schreibst einfach bei deinen returns statt "return erg=false;" return false;

    Beim Aufruf schreibst du boolean erg = armstrong(t);

    Zum prüfen
    if(erg) { System.out.println("wahr"); } else { System.out.println("falsch"); }


    bzw. if(armstrong(t)) { System.out.println("wahr") ... usw.

    solltest dich mal mit Funktionen und Rückgabeparametern beschäftigen...

  • '^' ist ein logischer Operator und nicht das was du benötigst.

    x^y (in Worten: x hoch y) würde in java entweder

    Code
    Math.pow(x,y)

    oder selbst implementiert etwa so

    Code
    int Basis = 2;
    int Exponent = 3;
    int Ergebnis = 1;
    for(int i = 0; i < Exponent; i++) {
        Ergebnis = Ergebnis * Basis; 
    } 
    //Ergebnis = 8

    aussehen.

    ausserdem für was sollten die einzelnen

    Code
    v=v-48...

    gut sein? ;)

  • Hmm, das mit den exp wusst ich zwar, aber ich bin ja nochnichmal so weit gekommen, das er das Rechnen angefangen hätte^^

    v=v-48 mach ich, weil ich in ner class vorher schonmal mit Armstrongzahlen gerechnet hatte, und er mit beim wandeln von Int zu String das ganze um 48 erhöht ausgegeben hat.

    Damals sah das so aus:

    Ich glaub ich bau die Aufgabe nochmal neu auf ;)

  • das hat er drin weil eine ascii 0 gleich 48 ist, '1' ist als int 49 deswegen rechnet er überall -48, übrigens beim aller ersten if hast du -47 stehen ich denk das ist ein fehler

    [FONT=Arial, Helvetica, sans-serif](\__/) [/FONT]
    [FONT=Arial, Helvetica, sans-serif] (='.'=) [/FONT]This is Bunny. Copy Bunny into your signature to help
    [FONT=Arial, Helvetica, sans-serif](")_(")[/FONT] him on his way to world domination.

  • So, ich hab das nochmal überarbeitet, aber er mosert immer noch in Zeile 4, das er "This method must return a result of typ boolean"

    Was mach ich da falsch?

  • Theoretisch ist es möglich, dass keine der if-Bedingungen betreten wird. Somit würde auch die Methode keinen Wert zurück geben. Was du machen kannst ist deinen if/else-if-Blöcken ein else anzhängen. Falls es keinen "sonst"-Fall gibt, dann kannst du einfach die letzte Bedingungen statt "else-if" als "if" lösen. Sollte ein weiterer Fall aber auf keinen Fall möglich sein könntest du einfach am Ende der Methode eine Exception werfen - die würfe nur geworfen werden falls der Fall auftaucht der nicht es nie sollte.

  • [EDIT]john foo war bei weitem schneller...[/EDIT]
    nach kurzem hinschaun schauts so aus, als ob du nicht garantieren wuerdest, dass du auch einen boolean zurueck gibst. (genau das sagt ja auch die fehlermeldung). stell dir vor du kommst immer ins "else" und das letzte "else if" geht auch nicht auf. dann lieferst du keinen boolean zurueck.

    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!