【问题标题】:Using a while loop to generate random numbers until a certain number is reached使用 while 循环生成随机数,直到达到某个数字
【发布时间】:2014-11-01 22:20:39
【问题描述】:

我正在学习 while 循环。目前,在我的 Java 类中,我正在尝试修改程序以使用基本的 while 循环来生成随机数,直到达到某个数字。在这种特殊情况下,我希望它打印到低于 0.0001 为止。我在尝试这样做时让自己感到困惑并且没有得到任何输出。我正在寻找任何人可能需要帮助我解决此问题或帮助我进一步理解的任何提示或技巧。到目前为止,这是我的代码:

import java.util.Random;
public class RandomNumbers {

    public static void main(String[] args) {
        Random rand = new Random();

        double val = 1;

        while(val < .0001){
            val = rand.nextDouble();
            System.out.println(val);
        }
    }
}

【问题讨论】:

  • val=1, 1>0.0001 所以它永远不会进入循环
  • 如您所见,您将val初始化为1,因此1> 0.0001,它甚至不会进入循环
  • until it goes below .0001 那么你的循环条件是错误的。如果条件为true,则将进入while 循环,并且程序会一直停留在那里,直到获得false
  • whileuntil 几乎相反。也就是说,如果你想要until (xxx),你会说while (not xxx),不管这样做的正确方法是什么。

标签: java while-loop


【解决方案1】:

while 条件表示:

"While x condition is true, do this"

在这种情况下,您的 val=1 大于 0.0001。所以 while 永远不会被执行。 所以设置while(val&gt;0.001),意味着:

"While my val is grater then 0.001, print it out. If is less then 0.001, return"

在代码中:

import java.util.Random;
public class RandomNumbers {

public static void main(String[] args) {
    Random rand = new Random();

    double val=1;

    while(val>.0001){
        val=rand.nextDouble();
        System.out.println(val);

    }
}

}

【讨论】:

    【解决方案2】:

    简单的逻辑错误。根据您当前的代码,while 循环将永远不会运行,因为val&lt;.0001 将始终为 false (1 &gt; .0001)。您需要将该行修改为:

    while(val > 0.0001){
    

    此外,为了提高可读性,通常最好在 . 前面加上一个 0 的小数。

    【讨论】:

      【解决方案3】:

      您的错误很容易纠正。您没有告诉您的代码增加或减少(++ 或 --),您应该将变量设置为增加或减少您希望它执行的操作的基数。

      【讨论】:

      • 是的,通常while 循环有++--,但这里的值被Random 更改,所以没有必要。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-24
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      • 2017-11-10
      • 2018-06-29
      • 2019-09-25
      相关资源
      最近更新 更多