2013-10-02 17 views
0

機器人從位置(0,0)向東開始。幾個蜂鳴器堆棧隨機放置在該行上,每個蜂鳴器都包含一些蜂鳴器。機器人從位置(0,0)向東開始。幾個蜂鳴器堆棧隨機放置在該行上,每個蜂鳴器都包含一些蜂鳴器。可能有不同數量的蜂鳴器堆棧。但是在位置(0,0)總是有一個蜂鳴器堆棧,而在位置(16,0)處總是有一個蜂鳴器堆棧 - (機器人世界的盡頭)。如何使計數器在java中的多個方法?

需要編寫一個方法,使機器人沿着該行移動,並拾取每個蜂鳴器堆棧。該方法應該不返回任何值並且不帶任何參數。 機器人拿起最後一個堆垛後,程序應打印總共拾取了多少個撿拾器。 消息應該是這樣的:拿起n個蜂箱, 其中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; 
} 
} 

我不能在所有堆棧計數器計數傳呼機。

+1

你可以使用一個靜態的int計數器並在你的方法裏增加它的值 – thiagoh

+0

聽起來像你想把「private int counter = 0;」在所有功能之外,並從功能中刪除它。 – developerwjk

+0

所以,如果我理解它正確,你想在'pickUpBeeperStack()'和'pickUpAllStacks()'方法中增加'counter'? –

回答

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; 
} 

乾杯!

+1

但在你的代碼中 - 「counter」不是它的對象級別的類級變量。它似乎你想宣佈,作爲'靜態' – exexzian

+0

@sansix - 是的,我的意思是對象級別,謝謝:-) –

相關問題