1

我试图在这里使用我的代码返回一个数字的符号,但我使用返回似乎有问题?帮忙?

import java.util.*;

public class ReturnTest {
    public static int sign(int n) {
        if (n > 0)
            return 1;
        else if (n == 0)
            return 0;
            else if (n < 0)
                return -1;
    }
4

3 回答 3

3

问题是您没有从方法中的所有路径返回方法。您可以通过根据Oracle Java 代码约定相应地缩进代码来看到这一点:

public static int sign(int n) {
    if (n > 0) {
        return 1;
    } else if (n == 0) {
        return 0;
        } else if (n < 0) {
            return -1;
        }
    }
    //needs a return here...
}

这可以通过在底部设置默认返回值来解决。代码可能如下所示:

public static int sign(int n) {
    if (n > 0) {
        return 1;
    } else if (n == 0) {
        return 0;
    }
    return -1;
}

还有其他方法可以实现这一点,但我更喜欢根据您当前的实现进行修复。


从您的评论来看,您似乎已开始学习 Java。要制作应用程序,您需要一个入口点。这由main具有此签名的方法标记:

public static void main(String[] args)

因此,在您当前的类中,您可以添加此方法并使用它来调用您的sign方法。我将展示一个非常基本的示例:

public class ReturnTest {
    public static int sign(int n) {
        if (n > 0) {
            return 1;
        } else if (n == 0) {
            return 0;
        }
        return -1;
    }
    public static void main(String[] args) {
        int n = 10;
        int signOfN = sign(n);
        System.out.println("The sign of " + n + " is: " + signOfN);
    }
}

根据您的需要调整此代码取决于您。我强烈建议您学习基础知识。你可以从这里开始:

于 2013-10-13T01:16:34.440 回答
3
   public static int sign(int n) 
   {
       if (n > 0)
          return 1;
       else if (n < 0)
          return -1;

       return 0;
   }

最后一个if-else是不必要的。我已经重新订购了从零跌落的“通常”方式。像这样编写代码更短、更简洁、更容易理解

于 2013-10-13T01:17:17.533 回答
1

保留最后一个 if ( if (n < 0)) 因为否则会有一个理论分支,该函数永远不会离开!每个分支都必须返回!

于 2013-10-13T01:16:03.843 回答