【问题标题】:Main.java:12: error: missing return statement } ^ [duplicate]Main.java:12:错误:缺少返回语句} ^ [重复]
【发布时间】:2021-05-27 21:18:52
【问题描述】:

谁能解释一下?

class Main{
    
    static String CountAndSay(int n)
    {
        if (n==1){
        return "1";
        }
        if(n==2)
        {
        return "11";
        }
    }
    public static void main (String[] args) 
    {
        System.out.println(CountAndSay(1));
      
    }
}

Ans:- Main.java:12: 错误:缺少返回语句 } ^

但是当我在 if 语句之后编写 return 语句时它正在工作。

class Main{
    
    static String CountAndSay(int n)
    {
        if (n==1){
        return "1";
        }
        if(n==2)
        {
        return "11";
        }
        return "0";
    }
    public static void main (String[] args) 
    {
        System.out.println(CountAndSay(1));
      
    }
}

答案:- 1

【问题讨论】:

  • 具有非 void 返回类型的方法需要返回一些东西。有什么好解释的。
  • 想想吧。在您的第一种方法中,n 既不是 1 也不是 2 时返回什么?
  • 试想一下如果 n 的值是 3 会发生什么,该函数不能返回任何东西。所以请确保在所有条件分支中都有 return 语句。

标签: java if-statement return


【解决方案1】:

第一个场景除了两个 if 语句之外没有条件返回语句。如果它超出了这两个条件怎么办?就像你在你的方法中传递 3 这样CountAndSay(3)?它不知道返回什么。所以如果你有两个没有else 条件的ifreturns,你需要一个默认的返回语句。或另一种表述方式是:

 static String CountAndSay(int n)
    {
        if (n==1){
           return "1";
        }else if(n==2)
        {
           return "11";
        }else{
           return "";//anything you think as a default.
        }
    }

【讨论】:

    【解决方案2】:

    如果没有任何 if 是目标,您总是需要一个 return 语句。下面的方法有效,因为调用了“return 0”,即使没有调用其他 return。如果上面的参数是例如3,它不会调用任何if语句,所以没有返回值,因此会出错。

    【讨论】:

      猜你喜欢
      • 2013-03-21
      • 2016-01-04
      • 2014-01-09
      • 2013-10-27
      • 1970-01-01
      • 2020-05-28
      • 2014-06-06
      • 2013-04-27
      • 1970-01-01
      相关资源
      最近更新 更多