在Java中计算堆栈中的蜂鸣器

时间:2013-10-22 02:05:19

标签: java karel

需要编写名为clearStacks()的方法,将最近创建的机器人向前移动,直到它到达墙壁,然后拾取所有蜂鸣器。该方法应该不返回任何值 并没有参数。 它还有副作用:该方法打印机器人在每个堆栈中拾取的蜂鸣器数量。假设一行有3个堆栈,输出可能如下所示:

Beepers:4 Beepers:1 Beepers:7

我的问题是我无法写出机器人在每个堆栈中拾取了多少蜂鸣器。只有总量。我是Java新手.. 我的代码:

void clearStacks() {
int beepers=0;
while(isSpaceInFrontOfRobotClear()) {
    moveRobotForwards();
    while(isItemOnGroundAtRobot()) {
        pickUpItemWithRobot();
        ++beepers;
        println(beepers);
    }
}
}

2 个答案:

答案 0 :(得分:2)

在检查堆栈之前,您需要重置计数。然后,您需要使用条件语句来查看清除堆栈后是否拾取了任何蜂鸣器(或确定堆栈不存在)。

void clearStacks() {
    int beepers=0;
    while(isSpaceInFrontOfRobotClear()) {
        moveRobotForwards();

        /* Reset the count of beepers. */
        beepers = 0;

        /* Pick up any beepers at current spot. */
        while(isItemOnGroundAtRobot()) {

            /* Pick up beeper, and increment counter. */
            pickUpItemWithRobot();
            ++beepers; 

        }

        /* Check to see if we picked up any beepers. 
         * if we did, print the amount.
         */
        if(beepers > 0){
            println(beepers);
        }
    }
}

答案 1 :(得分:0)

也许尝试实现一个数组?您可以使用前3个元素来表示前3个堆栈,然后该值可以表示每个堆栈中拾取的蜂鸣器数量。

int[] beepers = new int[3];
int count = 0;
while(isSpaceInFrontOfRobotClear()) {
    moveRobotForwards();
    while(isItemOnGroundAtRobot()) {
        pickUpItemWithRobot();
        beepers[0]++;
        if (count > #numberOfBeepers) {
               break;
        }
    }
    for (int i: beepers) {
             System.out.print(beepers[i] + " ")
        }
  }
}

如果这回答了您的问题,或者它没有

,请告诉我