0

机器人从面向东的位置 (0,0) 开始。沿着该行随机放置几个蜂鸣器堆栈,每个蜂鸣器都包含许多蜂鸣器。机器人从面向东的位置 (0,0) 开始。沿着该行随机放置几个蜂鸣器堆栈,每个蜂鸣器都包含许多蜂鸣器。可能有不同数量的蜂鸣器堆栈。但是位置 (0,0) 总是有一个蜂鸣器堆栈,并且位置 (16,0) 总是有一个蜂鸣器堆栈-(机器人世界的尽头)。

需要编写一个方法,使机器人沿行移动,同时拾取每个蜂鸣器堆栈。该方法不应返回任何值且不带参数。在机器人拾取最后一个堆栈后,程序应打印总共拾取了多少个蜂鸣器。消息应如下所示: Picked up n beepers,其中 n 是拾取的蜂鸣器数量。程序必须定义和使用这两个附加方法: moveRobotToNextStack() ,它将机器人向前移动,直到找到下一个堆栈和 pickUpBeeperStack(),它拾取堆栈中的所有蜂鸣器。我的代码:

public class Q4 {
void pickUpAllStacks() {
    int counter=0;
       pickUpBeeperStack();
       moveRobotToNextStack();
      counter += pickUpBeeperStack();
       print("Picked up "+ counter +" beepers");

    }

void moveRobotToNextStack() { 
        while(isSpaceInFrontOfRobotClear()) {
            moveRobotForwards();
            pickUpBeeperStack(); 
        }

    }  

    int pickUpBeeperStack() {
        int counter=0;
        while(isItemOnGroundAtRobot()) {
            pickUpItemWithRobot();
            counter++;
    }
    return counter;
}
}

我无法让计数器计数所有堆栈中的蜂鸣器。

4

1 回答 1

0

您可以声明counter为对象级变量:

int counter=0;

void pickUpAllStacks() {
       pickUpBeeperStack();
       moveRobotToNextStack();
      counter += pickUpBeeperStack();
       print("Picked up "+ counter +" beepers");

    }

void moveRobotToNextStack() { 
        while(isSpaceInFrontOfRobotClear()) {
            moveRobotForwards();
            pickUpBeeperStack(); 
        }

    }  

    int pickUpBeeperStack() {

        while(isItemOnGroundAtRobot()) {
            pickUpItemWithRobot();
            counter++;
    }
    return counter;
}

干杯!!

于 2013-10-02T20:39:48.927 回答