if/else 静态方法中的语句问题

if/else statement issues within static methods

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 区域。我想要它 return 区域或 return 错误消息。我尝试将 return 语句放在 else 语句中,但该方法不允许这样做。有什么建议吗?

你应该抛出异常。例如,

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

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

类似于:

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

然后你可以查看-1.0的return值是否为错误结果。

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