【问题标题】:Within a while loop, how do you keep track of how many iterations a a loop as done?在一个while循环中,你如何跟踪一个循环完成了多少次迭代?
【发布时间】:2016-06-25 13:54:09
【问题描述】:

我正在尝试将此代码设置为 while 循环仅执行 50 次 foreach 循环迭代或直到 hasAChildFoundMother 为真。

我需要声明一个变量,该变量将用于跟踪迭代次数,并且该变量将成为 while 循环条件的一部分;此外,变量需要在 while 循环内但在 foreach 循环外递增。

我真正遇到的问题是如何“在 while 循环内但在 foreach 循环外”递增它。

public void findMother() {

         Random generator = new Random();

         while (!hasAChildFoundMother()) {

             for (Turtle babyTurtles : this.babyTurtles) {
                 double degrees = generator.nextInt(90) + 1;
                 babyTurtles.turn(degrees);

                 int distance = generator.nextInt(50 - 10) + 10;
                 babyTurtles.forward(distance);
             }

        }


    }

【问题讨论】:

  • 在 while 循环之前初始化,在 while 条件下进行测试,在 while 循环内但在 for 循环外递增(即,将其粘贴在带有 for 的代码行之前,但在带有while 的代码行之后)。
  • 来这里之前试试谷歌搜索
  • 谢谢。我在来这里之前做了“谷歌”,但有时事情对某些人来说并不那么容易。我知道我应该做什么,但我只是想确定一下。感谢您对它感兴趣,尽管 LOL,
  • 你找到合适的答案了吗?您能发表评论和/或接受答案吗?

标签: java loops foreach while-loop increment


【解决方案1】:

这似乎是使用for 循环而不是while 循环的理想情况:

for(int i = 0; i < 50 && !hasAChildFoundMother(); i++) {
   for (Turtle babyTurtles : this.babyTurtles) {
      ...
   }
}

如果您真的不允许为此使用 for 循环,并且它必须是 while 循环,您可以选择次优:

int i = 0;
while (i < 50 && !hasAChildFoundMother()) {
   for (Turtle babyTurtles : this.babyTurtles) {
      ...
   }
   i++;
}

【讨论】:

    【解决方案2】:
    public void findMother() {
    
             Random generator = new Random();
             int i = 0;
             while (!hasAChildFoundMother() && i <=50) {
                 //HERE
                 //i++
                 for (Turtle babyTurtles : this.babyTurtles) {
                     double degrees = generator.nextInt(90) + 1;
                     babyTurtles.turn(degrees);
    
                     int distance = generator.nextInt(50 - 10) + 10;
                     babyTurtles.forward(distance);
                 }
                 //OR HERE
                 i++;
            }
    
    
        }
    

    【讨论】:

      【解决方案3】:

      一个问题有点混乱,但我认为它应该像这样简单:

      声明count 变量并在while 循环中添加count++。然后设置一个条件让count停止在50。

      【讨论】:

        【解决方案4】:
        public void findMother() {
             int counter = 0;
             Random generator = new Random();
        
             while ((!hasAChildFoundMother()) && (counter < 50)) {
                 counter++;
                 for (Turtle babyTurtles : this.babyTurtles) {
                     double degrees = generator.nextInt(90) + 1;
                     babyTurtles.turn(degrees);
        
                     int distance = generator.nextInt(50 - 10) + 10;
                     babyTurtles.forward(distance);
                 }
        
            }
        
        
        }
        

        所以基本上你计算你运行了多少次 while 循环。每次你开始一个新的循环时,它都会检查你是否已经完成了 50 次迭代,如果是,就会结束。

        注意,重要的是 (counter 不是 (counter

        【讨论】:

          猜你喜欢
          • 2014-10-11
          • 2018-05-14
          • 1970-01-01
          • 2022-10-12
          • 2015-03-23
          • 2020-01-19
          • 1970-01-01
          • 1970-01-01
          • 2016-04-07
          相关资源
          最近更新 更多