声明变量,限制在Java中的指定范围内

时间:2019-01-14 22:59:13

标签: java function variables math

我试图声明位于某个范围内的变量,这些变量将作为它们所属于的任何给定函数的参数。我现在有三个变量。

class xvalues {

double x1;

double x2;

double x3; }

我想以一种方式来执行此操作,以便可以在自己的类中定义变量“ xvalues”(有限制,例如x1的范围为(0,inf),x2的范围为(4 ,8)和x3> 0),这样我就可以将xvalues用作函数的参数,然后在函数中自由输入x1,x2和x3。

例如采用诸如;

static double f1(xvalues)
{
    return 5*x1 + x2 + 3*x3
}

,如果值超出范围,则返回null。

1 个答案:

答案 0 :(得分:0)

您可以通过在设置器中抛出IllegalArgumentException来做到这一点:-

public class XValues {
    private Double x1;
    private Double x2;
    private Double x3;

    public XValues(Double x1, Double x2, Double x3) {
        setX1(x1);
        setX2(x2);
        setX3(x3);
    }

    public void setX1(Double x1) {
        if (x1 < 0) throw new IllegalArgumentException("x1 can't be negative");
        this.x1 = x1;
    }

    public void setX2(Double x2) {
        if (x2 < 4 || x2 > 8) throw new IllegalArgumentException("x2 must be in range (4, 8)");
        this.x2 = x2;
    }

    public void setX3(Double x3) {
        if (x3 < 0) throw new IllegalArgumentException("x3 can't be negative");
        this.x3 = x3;
    }

    // GETTERS here
}

然后,当您尝试初始化对象或设置非法值时,将引发异常。

XValues xValues = new XValues(-1.0, 2.0, 3.0); //java.lang.IllegalArgumentException: x1 can't be negative

您还可以在getter中引发异常,并按您的要求从您的方法返回null,如下所示:-

static Double f1(XValues xValues) {
    try {
        return 5 * xValues.getX1() + xValues.getX2() + 3 * xValues.getX3();
    } catch (IllegalArgumentException e) {
        return null;
    }
}