【问题标题】:Check if number is in range of Dynamically Changing Numbers?检查数字是否在动态变化的数字范围内?
【发布时间】:2014-03-04 07:28:56
【问题描述】:

有没有办法确定一个数字是否在两个特定数字的范围内,如果这些数字正在变化?例如:

int num1 = -10;
int num2 = 100;
int num3 = 5;

if(num3 > num 1 && num3 < num2){

}

判断 num3 是否在 num1 和 num2 之间是相当容易的。但是,假设 num1 和 num2 在程序运行期间动态变化:

num2 becomes -30

其他一切都保持不变。现在,与以前相同的算法将不再有效。有没有一种优雅的方法来检查一个数字是否在使用动态变化的最大值和最小值的范围内?

【问题讨论】:

  • 如果您的一个整数的值发生变化,该算法仍然有效,除非两个边界中的较大者变为两者中的较小者(从您的示例中似乎不是这种情况) .这里发生了其他事情。
  • 是的,它本来是 num2 变低的。我修复了帖子

标签: java range


【解决方案1】:

您可以尝试以下方法,我创建了另外 2 个变量 iMiniMax,在 checking num3 is in rank 之前,我们定义了最大值和最小值:

int num1 = -10;
int num2 = 100;
int num3 = 5;

if (num3 > Math.min(num1, num2) && num3 < Math.max(num1, num2)) {

}

【讨论】:

  • 这段代码的意图可以通过使用Math.minMath.max更加清楚。
  • @Vulcan 感谢您的建议 :-)
  • 在任何这些情况下:num1 = num3 num2 = num3 num1 = num2 = num3 看看这篇文章:[link]stackoverflow.com/questions/5029409/…
【解决方案2】:

这有点傻。如果你在函数中有一个算法并且你说你希望num3 介于num1num2 之间,就是这样。该规则不应更改,因为 num1num2 已更改。实现应该是通用的并且独立于值。

如果您需要在此之前进行一些验证,请执行此操作。我没有看到任何其他优雅的方式来做到这一点。

【讨论】:

    猜你喜欢
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多