首页 > 解决方案 > 在 Java 中声明限制在指定范围内的变量

问题描述

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

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。

标签: javafunctionvariablesmath

解决方案


你可以通过投入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;
    }
}

推荐阅读