2011-06-06 44 views
0

我正在做一項任務,並且進行得相當順利,但我對目前爲止的一件事感到困惑。重點是通過現有的代碼學習繼承和閱讀。在不添加其他方法的情況下,我需要讓getMove()方法連續返回三次相同的隨機數,然後選取一個新的隨機數並讓它返回三次新數。等等返回相同的隨機int 3次,然後重複

還有其他幾個類,其中包括一個類,它保持與我在這裏建立的計數分開的計數。如果看到任何這些類讓我知道,我會發布它們,但我認爲它們與這個問題毫不相干。

編輯:澄清

我需要每次通話getMove()方法返回一個int值。前3次調用應返回相同的randomInt。之後,應該選擇一個新的randomInt,並且應該在接下來的三個調用中返回。只要它被調用,這應該重複。

最終的解決方案:

public class Crab extends SeaCreature { 
    private static final char CRAB = 'C'; 
    private int direction = rand.nextInt(4); 
    private int count; 
    /** 
    * Construct a SeaCreature object with the given character representation 
    * @param c the character for this SeaCreature 
    */ 
    public Crab(){ 
     super(CRAB); 

    } 

    /** Answers back the next move for this SeaCreature. 
    * @return 0, 1, 2, or 3 
    */ 
    public int getMove() { 
     if (count < 3) { 
      count ++; 
      return direction;    
     } 
     count = 1; 
     direction = rand.nextInt(4); 
     return direction; 
    } 
} 
+0

提示:'count <3'幾次可能是真的 - 甚至不會到'nextInt'位。 – 2011-06-06 03:25:27

+0

很可能,期望的是您將重用通過擴展它來維護計數的''類,或者通過使用它(真的取決於您)。 – pickypg 2011-06-06 03:30:26

+0

很難看出你想要完成什麼。你能發佈任務中的實際問題文本嗎? – Anonymoose 2011-06-06 03:33:41

回答

3

這並不是說這是一個「問題」,但你的領域應該是實例字段(即不是靜態的)。

但是,要從您的類中分離出問題,請使用以下代碼。請注意,您可以在後續調用rand()時獲得相同的動作。

private static int direction = rand(); 
private static int count; 

public static int getMove() 
{ 
    if (count < 3) 
    { 
     count++; 
     return direction; 
    } 

    count = 0; 
    direction = rand(); 
    return direction; 
} 

private static int rand() 
{ 
    return (int) (Math.random() * 4); // 0, 1, 2 or 3 
} 
+1

嘿傢伙 - 這是作業!這傢伙需要提示而不是解決方案! – 2011-06-06 03:42:14

+0

謝謝。這並沒有退出解決方案,但它有助於指引我朝着正確的方向前進。我在原始問題中發佈了我的最終解決方案。 @Stephen現在知道我學習並找到了自己的最終解決方案,現在可以休息好了。 – Justin 2011-06-06 04:08:13

+0

@Omni - np!很高興你學到了一些東西。 – Bohemian 2011-06-06 04:51:43

3

我可以看到我認爲的問題。

提示 - 您需要仔細考慮哪個狀態屬於所有螃蟹,哪個狀態是特定於個體螃蟹。你現在弄錯了,所有的螃蟹都在分享他們不應該的狀態。假設有大量的活螃蟹實例,這將導致getMove()不按照您的要求行事。