2016-11-13 99 views
-2

所以我有以下功能:缺少return語句因如果條件

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

我想取號,並得到其數字的總和,我想繼續這樣做,直到我結束了一個單個數字號碼。從我在這裏可以理解的,if聲明在編譯過程中導致錯誤,它說missing return statement並突出顯示最後的}

有人可以幫助我嗎?

在非void函數
+3

可怕的代碼格式化只會讓人們不想讀你的代碼。我試着爲你解決它,但是在將來,請自己做。此外,如果if條件爲false,則您的方法返回到哪裏? –

+0

@HovercraftFullOfEels感謝您的編輯,請牢記。我想讓電腦重新調用這個函數。 – JavaPilgrim

+1

這是行不通的。每個被聲明返回**的方法都必須**返回一些東西(帶有一些「例外」,我們不會在這裏介紹)。 –

回答

4

,每個函數調用還要追溯到return語句和java的說

函數中的每條執行路徑必然導致RETURN語句

所以加這return digitsum(n);

根據java的這個規則

,如果這種情況是if(n < 10)false則沒有進一步的return語句存在這樣無論是有笑在條件else的情況下,應該使用默認的return聲明或其他return聲明。

+1

:D謝謝!解決它。 – JavaPilgrim

1
if(n<10) return s; 

當n> = 10時,返回值是多少?

+0

只需要重新調用該函數。感謝您的檢查。 :) – JavaPilgrim

1

你的函數返回類型爲int所以它必須在任何情況下返回int值。您可以添加return 0或者您可以製作void

0

如果該方法被聲明爲void,則不必使用return語句(例如,可以使用System.out.Println),但是如果將方法聲明爲int,則必須返回INT。