基本级别的 Java 程序。缺少返回语句异常

Posted

技术标签:

【中文标题】基本级别的 Java 程序。缺少返回语句异常【英文标题】:Basic level Java program. Missing return statement exception 【发布时间】:2015-04-04 02:30:20 【问题描述】:

我的 int chkCM(int n) 函数不断收到错误“缺少返回语句”。有什么想法吗? 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;        
    

【问题讨论】:

一个好的第一步是正确缩进你的代码。 不是异常,而是编译器错误。您在代码底部的if 的“then”分支中缺少 return 语句。建议:写return sum % 10 == sum? sum : chkCM(sum); 你没有使用 IDE 吗?为什么你的代码根本没有格式化? 【参考方案1】:

你需要在递归调用chkCM的时候添加return语句:

 if(sum%10!=sum)
    return chkCM(sum);
    else
    return sum;  

【讨论】:

【参考方案2】:

改变

if(sum%10!=sum)
    chkCM(sum);

收件人:

if(sum%10!=sum)
    return chkCM(sum);

【讨论】:

【参考方案3】:

你应该写return chkCM(sum);而不是chkCM(sum);

问题是,如果 if 子句 (if(sum%10!=sum)) 为真,则该方法不会返回值

【讨论】:

以上是关于基本级别的 Java 程序。缺少返回语句异常的主要内容,如果未能解决你的问题,请参考以下文章

关于java异常抛出与返回值

异常处理——Java的try catch用法

异常:可调用语句未返回任何值

Java基础教程(12)--深入理解类

如何返回sqlalchemy执行的SQL语句及其所花时间

缺少返回语句错误