不理解遗漏的退货声明

时间:2014-11-26 14:58:57

标签: java

我是Java新手。我正在进行一个小程序练习并且错过了返回语句错误。

有人可以帮忙吗?

import java.util.Scanner;
class nonstatic1
{
    public static void main(String[] args)
    {
        // this method works 
        nonstatic2 Ref=new nonstatic2(); 
        int Addition=Ref.add();           
        System.out.println (Addition);     

         String email=email();

    }
       // the one below is the one that does not work and gives me the error
    public static String email()
    {
        Scanner in=new Scanner(System.in);
        System.out.println("Enter Your email Address");
        String email=in.nextLine();

        if(email.endsWith(".sc"))
          return email;
    }
}

6 个答案:

答案 0 :(得分:5)

如果email.endsWith(".sc")返回false,则该函数没有return语句。

由于您将返回类型声明为String,因此该函数必须始终返回String(或null)。

所以在你的情况下:

if (email.endsWith(".sc")) {
    return email;
}
return null; //Will only reach if condition above fails.

答案 1 :(得分:1)

问题在于IF语句。您错过了else分支。当表达式的评估值为false时,您的程序不会返回任何内容,因此会出现missing return statement错误。

将其更改为:

if(email.endsWith(".sc"))
          return email;
else
          return "invalid email";

答案 2 :(得分:1)

if(email.endsWith(".sc"))
      return email;

此处的代码不完整。你确实有return陈述,但只有在很多情况下才会出现这种情况。

if(email.endsWith(".sc")) {
      return email;
}
return null;

这将在逻辑现在完成并且涵盖所有可能性时起作用。

答案 3 :(得分:1)

您的功能方法

public static String email ()

声明类型为String的返回值。所以你必须在所有情况下都返回一个值。

在函数正文中,您只是return调用if。在else情况下,不会调用return语句。因此,当return为false时,您需要添加另一个if

答案 4 :(得分:1)

如果您不希望您的方法返回某些内容以防用户输入无效数据,请执行以下操作:

public static String email()
    {
        Scanner in=new Scanner(System.in);
        System.out.println("Enter Your email Address");
        String email=in.nextLine();

        if(email.endsWith(".sc"))
          return email;
        throw new RuntimeException("Dude, enter normal email man!!!");
    }

但是你的方法应该覆盖所有情况,并且总是带来回报或异常!

答案 5 :(得分:0)

问题是编译器在您的方法中检测到无法访问return语句的代码路径。特别是如果(email.endsWith(".sc")返回false,那么您的方法将无法到达return email;

要解决问题,您可以在方法的最后添加return null;return "";