2016-11-13 5 views
-2

So habe ich die folgende Funktion:Fehlende return-Anweisung aufgrund Wenn Bedingung

int digitsum(int n){ 
    int s = n; 
    if(n < 10) 
     return s;  
    while(s > 0){ 
     n = s + n % 10; 
     s = n/10; 
    } 
    digitsum(n); 
} 

Ich möchte eine Nummer zu übernehmen und die Summe ihrer Ziffern bekommen und ich möchte weiterhin tun, bis ich mit einem Ende einstellige Zahl. Von dem, was ich hier verstehen kann, verursacht die if Anweisung einen Fehler während der Kompilierung, es sagt missing return statement und markiert die letzte }.

Kann mir jemand dabei helfen?

+3

Schreckliche Code-Formatierung wird nur dazu führen, dass Leute Ihren Code nicht lesen möchten. Ich habe versucht, es für dich zu reparieren, aber mach es in Zukunft selbst. Auch, wo wird Ihre Methode zurückgegeben, wenn die If-Bedingung falsch ist? –

+0

@HovercraftFullOfEels danke für die Bearbeitung, wird im Hinterkopf behalten. Ich möchte, dass der Computer die Funktion nur erneut aufruft. – JavaPilgrim

+1

Das wird nicht funktionieren. Jede Methode, die deklariert wird, etwas zurückzugeben ** muss ** etwas zurückgeben (mit ein paar "Ausnahmen", auf die wir hier nicht eingehen). –

Antwort

4

in Nicht-Leere Funktion muss jeder Funktionsaufruf zu einer return-Anweisung verfolgen und als Java sagt

Jeder Ausführungspfad in einer Funktion zu einer RETURN-Anweisung führen muss diese

so hinzufügen return digitsum(n);

nach dieser Regel in Java, wenn diese Bedingung if(n < 10) ist false dann gibt es keine weitere return Anweisung existiert so entweder dort sho old ist ein Standard return Anweisung oder es sollte eine andere return Anweisung in bedingten else Fall sein.

+1

: D danke! das löst es. – JavaPilgrim

1
if(n<10) return s; 

Wenn n> = 10, was ist der Rückgabewert?

+0

Ich möchte nur, dass die Funktion erneut aufgerufen wird. Danke für das Kontrollieren. :) – JavaPilgrim

1

Ihre Funktion Rückgabetyp ist int so muss int Wert in jeden Fall zurückgegeben werden. Sie können return 0 hinzufügen oder Sie können es void machen.

0

Wenn die Methode als void deklariert ist, müssen Sie die return-Anweisung nicht verwenden (Sie können beispielsweise System.out.Println verwenden), aber wenn Sie die Methode als int deklariert haben, müssen Sie eine zurückgeben int.