java - 当不断添加随机 double 直到达到特定距离时,无法使 while() 循环工作

标签 java

我使用 while() 循环不断地将随机 double 加到 x 上,直到 x 达到距原点的特定距离。它停止运行,没有任何输出。如果我将 while() 循环更改为 while (Math.abs(x) == distance),它给了我输出,尽管不是我想要的正确输出。这些代码有什么问题?感谢您的任何意见。

while (Math.abs(x) != distance)
{
  randValue = (-1.0) + 2.0 * rand.nextDouble();
  x = x + randValue;
  move = move +1;
}   
System.out.println("After " + move + " moves X now at " + x);

最佳答案

您正在检查该值是否恰好所需的距离。您需要检查是否达到或超出了所需的距离:

while (Math.abs(x) < distance)

一般来说,对浮点值使用 ==!= 是一个坏主意 - 在执行了一些操作之后,您经常会发现值与预期值接近,但不完全正确。如果您想检查一个值是否“几乎等于”另一个值,您需要定义一个特定的容差并进行检查。不过,我认为您的情况不需要这样做。

关于java - 当不断添加随机 double 直到达到特定距离时,无法使 while() 循环工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25812927/

相关文章:

java - Spring Cloud SQS 轮询

Spring + Hibernate + jersey 中的 java.lang.ExceptionInInitializerError

java - 关于集合访问器转换的模式

java - 如果没有图像,如何在图像布局中显示名字的首字母

java - JMF 中的视频效果

java - Java 中使用信号量的循环线程

java - HttpURLConnection 响应代码 405 方法不允许错误

java - NullPointerException:在数组和面板中添加 JButton

java - JTree - 添加节点的问题

java - 由 : org. hibernate.MappingException 引起:在以下位置找到元素的重复属性映射