为什么我不能以这种方式在静态方法中返回任何内容

时间:2016-01-07 16:59:41

标签: java return static-methods

我写了一段代码只是为了训练一点点,我想知道为什么我不能使用这种表示法。

public static double retangleArea (double c, double d) {
  double area = c * d;
  if ( c < 0 || d < 0) {
    System.out.println("Error.");
    return;
  }
  return area;
}

如果我在main()中调用此方法,它会喊出“#34;错误。”#34;并且仍然用负数计算(c * d)但是我只想要显示印刷品。好吧,我知道如何摆脱这个问题我只想理解为什么我不能这样做以及什么&问题就在于此。

3 个答案:

答案 0 :(得分:4)

围绕这个的三种方式:

  1. throw异常而不是向控制台写错误。您可以在catch块中写入控制台,您可以更好地处理错误。

  2. 将函数返回类型更改为Double(注意大写),如果您不想计算值,则返回null

  3. 使用java.lang.Optional<T>作为返回类型。

  4. 其中,我更喜欢,因此推荐1。

答案 1 :(得分:1)

如果方法返回return;,则只能使用void

答案 2 :(得分:1)

您的方法是public static double这意味着您必须在任何情况下都返回double。您可以将其设为public static void并将值传递给类的字段。