java - 在 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。
解决方案
你可以通过投入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;
}
}
推荐阅读
- google-cloud-platform - 气流 DAG 未在计划时间触发
- javascript - 从 jest-playwright-preset 运行 serve 时,Vue 应用程序出现编译错误,但其他情况下工作正常
- python - Avro python数组序列化
- ibm-cloud - IBM Watson 云 ALPN 名称?
- javascript - 反应 + 从查询字符串中获取值
- c - 如何在实模式下重载中断?
- django - 模型的 __past_status = None 字段存储在哪里?
- database - 在颤动中一次更新表中的一个字段
- laravel - 日期和时间本地化在 Laravel-mix 中不起作用
- ubuntu - 通过 cURL 发送 Pushkit 通知 - curl: (60) SSL 证书问题:无法获取本地颁发者证书