我的int chkCM(int n)函数一直收到错误“Missing return statement”。有什么想法吗? P.S程序是检查输入的数字是否为复合幻数。
这是我的代码:
import java.util.Scanner;
class Composite_Magic{
public static void main (String args[]){
Scanner s=new Scanner (System.in);
System.out.println("Enter a number to check if it is a Composite Magic number or not");
int n=s.nextInt();
boolean isPrime=false;
for(int i=2;i<=(n/2);i++)
if(n%i==0)
isPrime=true;
if(isPrime==false){
if(chkCM(n)==n)
System.out.println("Composite Magic Number");
else
System.out.println("Not a Composite Magic Number");
}
else
System.out.println("Not a Composite number");
}
static int chkCM(int n){
int sum=0;
while(n!=0){
sum+=n%10;
n/=10;
}
n=sum;
if(sum%10!=sum)
chkCM(sum);
else
return sum;
}
}
答案 0 :(得分:3)
你需要在chkCM的递归调用中添加一个return语句:
if(sum%10!=sum)
return chkCM(sum);
else
return sum;
答案 1 :(得分:0)
更改
if(sum%10!=sum)
chkCM(sum);
要:
if(sum%10!=sum)
return chkCM(sum);
答案 2 :(得分:0)
而不是chkCM(sum);
你应该写return chkCM(sum);
问题是,如果if子句(if(sum%10!=sum)
)为真,该方法将不返回值