这是我的解决方案。我的代码:
boolean pickUpNBeepersCheckIfAll(int beeper) {
int counter=0;
while(beeper>counter) {
pickUpItemWithRobot();
counter++;
}
return false;
}
这里应该有问题,但我找不到错误..
这是我的解决方案。我的代码:
boolean pickUpNBeepersCheckIfAll(int beeper) {
int counter=0;
while(beeper>counter) {
pickUpItemWithRobot();
counter++;
}
return false;
}
这里应该有问题,但我找不到错误..
您拥有的方法将始终返回 false,因为 counter 在检查时永远不会为 0。你说如果没有更多的物品要拾取,你希望该方法返回 false,但你从不检查那个条件。您还说有足够的蜂鸣器来确保 pickUpItemWithRobot() 永远不会失败。您必须在某处拥有蜂鸣器的总数(我现在假设 pickUpItemWithRobot() 返回剩余的蜂鸣器数量。您想要这样的东西:
boolean pickUpNBeepersCheckIfAll(int beeper) {
int beepersLeft;
for (i = 0; i < beeper; i++ {
beepresLeft = pickUpItemWithRobot();
}
return beepersLeft > 0;
}
如果 pickUpItemWithRobot() 不能返回剩余的蜂鸣器数量,那么返回语句应该类似于:
return getNumberOfBeeprsLeft() > 0;
问题是采取的行动顺序错误
int counter=0; //set conter to 0
while(beeper>counter) {
pickUpItemWithRobot();
counter++; //increment counter e.g. it will be 1 in the first loop
if(counter==0) return true; //never true...
好的,这counter++
是一个 post 运算符,但这意味着在计算表达式之后完成 -而不是在循环完成之后。所以下一个表达式将看到新值:例如 1 表示第一次迭代......
boolean pickUpNBeepersCheckIfAll(int beeper) {
int counter=0;
while(beeper>counter) {
pickUpItemWithRobot();
counter++;
}
return true;
}
这是你要找的东西吗??
boolean pickUpNBeepersCheckIfAll(int beeper) {
for (i = 0; i = beeper; i++ {
try {
pickUpItemWithRobot();
} catch (ItemNotFoundException e) {
return false;
}
}
return true;
}
在您的版本中,计数器永远不会为 0,因为您每次循环都会增加它。
显然,如果蜂鸣器用完,您的 pickUpItemWithRobot() 方法将需要抛出异常。