2017-03-21 158 views
-3

這是我第一次在這裏提出問題。 即時通訊新的Java和我hava在這個代碼循環的問題 我不知道在哪裏打破循環。關於擲骰子作業的遊戲

謝謝你對我的幫助:) this image is from the book regarding this question

import java.util.*; 


    public class GameOfCraps { 



    public static void main(String[] args) { 
    Random rn = new Random(); 
    int counterw = 0; 
    int counterl = 0; 
    int countsum = counterl + counterw; 
    int points = 0; 

    do { 
     int rndice1 = rn.nextInt(5) + 1; // 1 to 6 
     int rndice2 = rn.nextInt(5) + 1;// 1 to 6 
     int sum = rndice1 + rndice2;// sum of dice random 

     if (sum == 2 || sum == 3 || sum == 12) { 
      // System.out.println("you lose"); 
      counterl++; 
     } 

     else if (sum == 7 || sum == 11) { 
      // System.out.println("you won"); 
      counterw++; 

     } 

     else { 
      do { 
       boolean xc = false; 
       points = sum; 
       int rndice3 = rn.nextInt(5) + 1; 
       int rndice4 = rn.nextInt(5) + 1; 

       if (rndice3 + rndice4 == points) { 
        // System.out.println("you won"); 
        counterw++; 
        xc = true; 
        //break; 
       } 

       if (xc == false) 
        counterl++; 

      } while (points != 7); 

     } 

    } while (countsum <= 10000); 
    System.out.println(counterw); 
    System.out.println(counterl); 
    System.out.println("probability of winning the game: "+(double)(counterw)/(counterw+counterl)); 

} 

}

+3

[?爲什麼?「有人可以幫助我」不是一個實際問題(https://meta.stackoverflow.com/questions/284236/why-is-can -someone的幫助 - 我 - 不 - 的 - 實際問題)。 –

+0

這裏的實際問題是什麼?預期的結果是什麼,目前的結果是什麼?在我看來,你根本不理解do()while()的工作方式? – Mikenno

+0

歡迎來到Stack Overflow!看起來你可能會問作業幫助。雖然我們本身沒有任何問題,但請觀察這些[應做和不應該](http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845#338845),並相應地編輯您的問題。 (即使這不是作業,也請考慮建議) –

回答

0

我看來,你可以只使用boolean xc退出循環,而不是使用點聲明(給定一個球員贏了我假設循環不應該運行aagin)

現在do {} while()循環就像這樣工作

do中的代碼總是運行ATLEAST 1次,然後檢查最後的while語句,如果語句仍然爲true,則再次運行該語句,直到該語句爲false,因此此處所需的是退出要求(考慮到球員贏得了...只是使用?)

例如

do { 
    xc = false; 
    if(points == condition){ 
     xc = true; 
    } 
    // some code 
} while(!xc) 
1

的問題是在「第二階段」遊戲邏輯,遊戲一直在獲勝之後怎麼回事,你在每次擲骰後增加損失計數器,如果7先滾動,然後該遊戲結束,它應該只是一個損失。你可能想要更多的東西是這樣的:

else { 
     while (true) { 
      int rndice3 = rn.nextInt(5) + 1; 
      int rndice4 = rn.nextInt(5) + 1; 

      if (rndice3 + rndice4 == sum) { 
       // System.out.println("you won"); 
       counterw++; 
       break; 
      } 

      if (rndice3 + rndice4 == 7) { 
       counterl++; 
       break; 
      } 
     } 
    } 
+0

我通過改變do {}的循環來修復代碼,{}爲for(){} – Ali