这是我的解决方案。 我的代码:
boolean pickUpNBeepersCheckIfAll(int beeper) {
int counter=0;
while(beeper>counter) {
pickUpItemWithRobot();
counter++;
}
return false;
}
这里应该有问题,但我找不到错误..
答案 0 :(得分:1)
问题是采取了错误的行动顺序
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++
是一个帖子操作符,但是表示在表达式评估完成后完成 - 不在循环完成后。因此,下一个表达式将看到新值:例如1为第一次迭代...
答案 1 :(得分:1)
boolean pickUpNBeepersCheckIfAll(int beeper) {
int counter=0;
while(beeper>counter) {
pickUpItemWithRobot();
counter++;
}
return true;
}
这是你要找的东西吗?
答案 2 :(得分:1)
您拥有的方法将始终返回false,因为计数器在检查时永远不会为0。你说如果没有更多的东西要被拿起但你永远不会检查那个条件,你希望该方法返回false。你还说有足够的蜂鸣器来确保pickUpItemWithRobot()永远不会失败。你必须在某处拥有蜂鸣器的总数(我现在假设pickUpItemWithRobot()返回剩下的蜂鸣器数量。你想要这样的东西:
boolean pickUpNBeepersCheckIfAll(int beeper) {
int beepersLeft;
for (i = 0; i < beeper; i++ {
beepresLeft = pickUpItemWithRobot();
}
return beepersLeft > 0;
}
如果pickUpItemWithRobot()无法返回剩余的蜂鸣器数量,那么return语句应该是类似的:
return getNumberOfBeeprsLeft() > 0;
答案 3 :(得分:0)
boolean pickUpNBeepersCheckIfAll(int beeper) {
for (i = 0; i = beeper; i++ {
try {
pickUpItemWithRobot();
} catch (ItemNotFoundException e) {
return false;
}
}
return true;
}
在您的版本中,计数器从不为0,因为每次循环都会增加它。
显然你的pickUpItemWithRobot()方法如果用完蜂鸣器就需要抛出异常。