Brauche Hilfe bei JAVA! (Rekursion) - Fehlermeldung: missing return statement.

... komplette Frage anzeigen

6 Antworten

wenn du in einem if-statement etwas returnst, wird es logischerweise nur dann zurückgegeben. java braucht aber für JEDEN falll ein return-statement. deshalb schreiben die meisten programmierer einfach ein return -1; ans ende, wenn sonst nur in if-statements etwas returnt wird. also immer ans ende der methode ein return -1;

Antwort bewerten Vielen Dank für Deine Bewertung
return(div_help(a - b, b) + 1);

Du veruchst hier eine Funktion "return" aufzurufen, welche er nicht kennt. Die Klammern müssen meiner Meinung nach weg oder wenigstens ein Leerzeichen dazwischen. Ich hab grad kein Eclipse drauf, aber ich wette, dass der Kompiler das als Funktion wertet.

Aber es ist ein Interessanter Ansatz für eine Methode, welche es längst gibt ^^ Sind das Übungsaufgaben? ^^

PS: bitte mit dem if gewissenhafter arbeiten. du hast ganz schön viele if's nacheinander, was man eigentlich nicht so schreibt. if-elseif-else sind bessere Lösungen. Auch wenn der Kode ansich richtig ist und funktioniert.

PS: Und bitte bei der nächsten Frage in der Vorschau schauen, ob er den Quelltext richtig in der Quelltext-Zitat-Funktion eingebettet hat. Der erste Teil deines Kodes ist nicht eingerückt und somit schwer lesbar.

PPS: Und bitte auch nächste mal mit einem Kommentar ( // ) die Zeile markieren, wo der Fehler ist. Zeile 34 ^^......hier zählt doch keiner nach, erst recht nicht wenn nur die hälfte richtig eingerückt ist ^^

Danke.

Ich hoffe der Fehler war korrekt den ich dir gegeben habe. (die Zeile mit dem return)

Antwort bewerten Vielen Dank für Deine Bewertung

Ich weiß nicht, welche Zeile 34 ist (und bin offen gestanden zu faul, von Hand nachzuzählen), aber vom kurzen draufschauen gibt es einen Pfad ohne return-Statement in div(), wenn in den ersten if-Zweig gesprungen wird und die darunter liegenden if-Bedingungen zu "false" ausgewertet werden.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von kidbabo
05.12.2013, 00:45

"public static int mul(int i, int g){ if(i >= 0){ return mulhelp(i, g); }//Ende if if(g < 0){ return mulhelp(i, -g); }//Ende if }//Ende mul Methode"

Hier zum Beispiel, wenn ich die untere if Abfrage weglasse, dann klappt das Programm, aber wenn ich zwei oder mehrere mache, dann klappt es nicht. Kannst du mir vielleicht sagen, wo ich noch etwas einfügen muss?

0

Was ist, wenn a < 0 && b > 0 gilt? Dann wird nix zurückgegeben. Als letzte if-Anweisung in div steht da

    if((a < 0) && (b < 0)){
        return div_help(-a, -b);
    }

Da kommst du aber nie hin, da ja schon am Anfang (a < 0) || (b < 0) ausgewertet wurde. Wolltest du da vielleicht ein ausschließendes EXOR haben?

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von FataMorgana2010
05.12.2013, 00:52

Der Ausdruck (a < 0) || (b < 0) ist auch dann wahr, wenn beide Werte kleiner als Null sind.

0

also die Antworten sind bes jetzt ja nicht so ergiebig... deshalb geb ich mal auch noch meinen Senf dazu :D

Also folgendes: Ich weiß nicht ganz 100%ig was wie ich das erklären soll aber meiner Meinung nach ist das Problem bei deiner div-Methode, dass du kein return außerhalb des if's hast, hatte dieses Problem auch schon öfters. Hab aber auch nicht wirklich ne Ahnung warum genau es so nicht geht, Fakt ist nur einfach dass es nicht geht. also schreib deine Methode so, dass du ein return außerhalb einer Schleife erhälst.

Antwort bewerten Vielen Dank für Deine Bewertung

bitte den quelltext richtig formattieren!!

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?