我试图将此代码设置为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);
}
}
}
答案 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次。