在一个while循环中,如何跟踪循环完成的迭代次数?

时间:2016-03-10 15:53:45

标签: java loops foreach while-loop increment

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

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

我遇到麻烦的问题是如何在while循环内增加它,但在foreach循环之外#34;

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);
             }

        }


    }

4 个答案:

答案 0 :(得分:2)

这似乎是使用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++;
}

答案 1 :(得分:0)

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++;
        }


    }

答案 2 :(得分:0)

有点混淆一个问题,但我认为它应该就这么简单:

声明count变量并在while循环内添加count++。然后将计数条件设置为50。

答案 3 :(得分:0)

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次迭代,如果是,则完成。

注意,重要的是(计数器<50)(计数器&lt; = 50)。后者将运行51次。