Java中的return语句

时间:2013-09-26 08:27:08

标签: java

这是我的解决方案。 我的代码:

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

这里应该有问题,但我找不到错误..

4 个答案:

答案 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()方法如果用完蜂鸣器就需要抛出异常。