2016-11-13 100 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。