基本级Java程序。缺少return语句异常

时间:2015-02-04 14:15:32

标签: java function logic

我的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;        
    }
}

3 个答案:

答案 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))为真,该方法将不返回值