我试图声明位于某个范围内的变量,这些变量将作为它们所属于的任何给定函数的参数。我现在有三个变量。
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。
答案 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;
}
}