我正在编写一个名为robocode的编程游戏程序.问题出在这里:
void wallScan(boolean While){
stop();
getStraight();
turnGunRight(90);
if(startabsolute){
straight=true;
}
while (While){
ahead(10000000);
turnRight(90);
}
resume();
}
Run Code Online (Sandbox Code Playgroud)
您可能无法理解大多数代码,因为它扩展了robocode.Robot,但我的问题在于变量While.循环没有结束,因为方法获取参数一次,它是真的所以方法成为一个永恒的循环,但有一种方法来刷新方法参数,因为我不想每次调用这个时都做一个while循环方法?
你不应该用大写字母写出参数.所以它将是而不是在.但是这是不允许的,因为while是关键字.所以首先要改变你在方法中传递的参数.
那你的问题是,你用参数调用方法.由于它是您传递的原始布尔值,因此在执行wallScan方法期间无法从另一个方法,调用,类等更改该值,因此while循环永远不会完成.
相反,您应该在包含此方法的类中创建一个成员字段,并给它一个有意义的方法.在示例中,我只是将其称为whileCondition.
void wallScan(){
stop();
getStraight();
turnGunRight(90);
if(startabsolute){
straight=true;
}
while (whileCondition()){
ahead(10000000);
turnRight(90);
}
resume();
}
public void setWhileCondition(boolean bool) {
whileCondition = bool;
}
public boolean isWhileCondition() {
return whileCondition;
}
Run Code Online (Sandbox Code Playgroud)
因此,您可以设置导致从方法外部终止while循环的条件.