Java 验证范围

Java 验证范围,java,algorithm,Java,Algorithm,我正在编写一个工具,用户可以为公式的不同值选择不同的选项 例如:F=公式的值 if (F>10) option = 1 if (F<5) option = 2 if (F=7) option = 6 if(F>10)选项=1 如果(F 2</代码>和 f<4 < /代码>是可以的,因为我可以认为它是代码>2<f<4</CODE> f<4 < /代码>。没有覆盖范围(可以设置默认选项)是可以的。 是否有任何数据结构来执行此操作或任何算法 提前感谢!实际上非常简单,您只需要有两个变

我正在编写一个工具,用户可以为公式的不同值选择不同的选项

例如:F=公式的值

if (F>10) option = 1

if (F<5) option = 2

if (F=7) option = 6
if(F>10)选项=1
如果(F 2</代码>和<代码> f<4 < /代码>是可以的,因为我可以认为它是代码>2<f<4</CODE><代码> f<4 < /代码>。没有覆盖范围(可以设置默认选项)是可以的。

是否有任何数据结构来执行此操作或任何算法


提前感谢!

实际上非常简单,您只需要有两个变量-
下限
上限
,它们在开始时被初始化为
-infinity
无限

当新情况出现时

  • 如果是
    Fa
    ,则更新:
    lowerBound=max{lowerBound,a+1}
  • 如果是
    F=a
    ,则更新:
    lowerBound=max{lowerBound,a},upperBound=min{upperBound,a}
如果在任何点
lowerBound>upperBound
-都没有解决方案


我在这里假设了整数,但对于非整数也很容易修改它。

因为用户正在传递一个包含表达式的
字符串,所以最好执行一些
字符串
分析以减轻负载。例如,如果用户输入
F=6
你知道没有其他东西可以工作,所以你不能允许更多。您可以添加更多的上下文吗?什么是错误条件,什么是可接受的条件?这些条件看起来非常类似于线性优化中的约束。您可以尝试使用单纯形实现来检查可行性。如果用户插入F<5而非F<8,会发生什么?应将其视为错误还是第二个选项uld将被视为5