2014-04-19 84 views
0

例如,我有一個編程任務,希望我製作一個硬幣班和一個驅動程序班級,隨機將一枚硬幣翻轉40次,然後計算最後結束的次數頭和尾巴。那麼我得到的整個代碼到目前爲止:如何計算隨機實例的出現次數

public class driver { 
    public static void main(String[] args) { 
     coin myCoin = new coin(); 
     System.out.println("Coin initially is " + myCoin.getSideUp()); 
     for (int i = 0; i < 40; i++) { 
      myCoin.toss(); 
      System.out.println("Coin is now " + myCoin.getSideUp()); 
     } 
    } 
} 

public class coin { 
    protected String sideUp; 

    public coin() { 
     if (Math.random() < 0.5) 
      this.sideUp = "heads"; 
     else 
      this.sideUp = "tails"; 
    } 

    public void toss() { 
     if (Math.random() < 0.5) 
      this.sideUp = "heads"; 
     else 
      this.sideUp = "tails"; 
    } 

    public String getSideUp() { 
     return this.sideUp; 
    } 
} 

這一切都完成了,但我如何計算每個正面或反面的實例?

回答

0

只需在每次折騰後檢查並確認您的硬幣是頭部還是尾部。

你可以保持對各狀態(頭/尾)計數器陣列中的象下面這樣:

Coin myCoin = new Coin(); 
System.out.println("Coin initially is " + myCoin.getSideUp()); 

int[] coinCount = new int[2]; 
for (int i = 0; i < 40; i++) { 
    myCoin.toss(); 
    System.out.println("Coin is now " + myCoin.getSideUp()); 

    if(myCoin.getSideUp().equals("heads")){ 
     coinCount[0]++; 
    } else { 
     coinCount[1]++; 
    } 
} 

System.out.println("Heads: "+coinCount[0]); 
System.out.println("Tails: "+coinCount[1]); 
+1

爲什麼陣列?你期望'coinCount [0] + coinCount [1]'是40以外的東西嗎? (確實有時硬幣可以掛在空中......但它不是示例代碼:)) –

+0

@AlexeiLevenkov嗯..現在我想到了,我想你是對的。在這種情況下,只需一個「int」變量來計算頭部(或尾部)的狀態就足夠了(假設沒有空中懸掛)。 – wns349

+0

哇我坐在這裏看着這個,我想知道我怎麼沒有意識到這一點。哈哈,我一定有過這樣的大腦放屁。謝謝你,沒有硬幣不能掛在空中,這太簡單了。 – user3390848

2

把它們當做扔東西而不是最後。如果賦值禁止,則將結果保存到數組中,並在最後對來自數組的結果進行計數。