2013-09-26 101 views
-6

这是我的解决方案。 我的代码:Java中的返回声明

boolean pickUpNBeepersCheckIfAll(int beeper) { 
    int counter=0; 
     while(beeper>counter) { 
      pickUpItemWithRobot(); 
      counter++; 
     } 
     return false; 
} 

应该有什么问题在这里,但我不能找到一个错误..

+1

“应该有什么错在这里,但我不能找到一个错误。”怎么了怎么了预期的结果 –

+1

如果有帮助,反会从不= 0,所以这个函数永远不会返回true – Rawrgramming

+1

对于初学者计数器== 0永远不会计算为真 – Leon

回答

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为第一次迭代...

0
boolean pickUpNBeepersCheckIfAll(int beeper) { 
    for (i = 0; i = beeper; i++ {    
     try { 
      pickUpItemWithRobot(); 
     } catch (ItemNotFoundException e) { 
      return false; 
     } 
    } 
    return true; 
} 

在您的版本计数器永远不会0每增加一个循环。

显然你pickUpItemWithRobot()方法将需要抛出异常,如果它用完了蜂箱。

+0

OP指出有足够的Beepers安全地执行循环,所以ItemNotFoundException永远不会被抛出。 – JTMon

1
boolean pickUpNBeepersCheckIfAll(int beeper) { 
int counter=0; 
    while(beeper>counter) { 
     pickUpItemWithRobot(); 
     counter++; 

    } 
    return true; 
} 

这是你寻找的东西吗?

+0

没有。还有一个错误。 – user2817366

+0

从我们所知,这应该是正确的版本。也许使用for循环而不是while。这也清楚地表明pickUpNBeepersCheckIfAll没有办法返回false。 – Alex

+0

是什么样的?我认为你需要从方法“pickUpItemWithRobot()”返回类似布尔值的东西。如果pickUpItem成功发生,那么你可以做下一个计数。 –

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 getNumberOfBeeprsLeft() > 0;