【问题标题】:if/else statement issues within static methods静态方法中的 if/else 语句问题
【发布时间】:2021-12-17 13:00:15
【问题描述】:
package geometrypack;

public class Calc {
    public static double areaOfCircle(int radius) {
        if (radius <= 0) {
            System.out.println("Input cannot be a negative number.");
        }
        return (Math.PI * (radius * radius));
        
    } // areaOfCircle method
    
    public static double areaOfRectangle(int length,int width) {
        if (length <= 0 || width <= 0) {
            System.out.println("Input cannot be a negative number.");
        }
        return length * width;
        
    } // areaOfRectangle method
    
    public static double areaOfTriangle(int base, int height) {
        if (base <= 0 || height <= 0) {
            System.out.println("Input cannot be a negative number.");
        }
        return (base * height) * 0.5;
    }
}

所以,我要做的就是让每个方法在打印错误消息时不返回该区域。我希望它返回该区域或返回错误消息。我尝试将 return 语句放在 else 语句中,但该方法不允许这样做。有什么建议吗?

【问题讨论】:

  • 我没有看到负维度或零维度的问题。在所有这些情况下,他们仍然会为您提供正确的区域。无论如何,在违反调用者前置条件的情况下“不返回值”的主要方法是抛出异常。
  • 我也没有,但是教练很挑剔,希望我们一字不差地听从他的指示,否则我们会扣分。他特别希望班级有这个错误信息。感谢您的回复。
  • 如果您的导师逐字逐句地指示您必须“返回错误消息”,那么就有非常错误的地方,因为错误消息是字符串,而这些方法不能返回字符串,因为它们被声明为类型double。因此,请编辑您的问题,以确保您准确地包含了您的要求。
  • 在这种情况下,我建议您将这些说明逐字逐句作为问题的一部分。
  • 好的,我知道了。谢谢大家的回复,我从现在开始做。所以基本上,因为它是一个返回双精度的方法,它会以一种或另一种方式返回它。但无论如何,这是他的指示。 “一种接受圆半径并返回圆面积的静态方法。”然后在页面下方:“如果负值用于圆的半径、矩形的长度或宽度或三角形的底边或高度,则这些方法应显示错误消息。”

标签: java conditional-statements static-methods


【解决方案1】:

你应该抛出一个异常。例如,

if (radius <= 0) {
    throw new IllegalArgumentException("Input cannot be a negative number.");
}

【讨论】:

    【解决方案2】:

    或者在System.out.println之后的if子句中加入return语句。

    类似:

    if (radius <= 0) {
       System.out.println("Input cannot be a negative number.");
       return -1.0;
    }
    

    然后可以检查返回值-1.0是否为错误结果。

    让我们回到 C 编程时代之前出现异常之类的东西。 :)

    【讨论】:

      猜你喜欢
      • 2021-05-15
      • 1970-01-01
      • 2014-09-26
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多