2013-02-21 38 views
0

此模擬一個擲骰子的程序是這樣一個問題:嘗試寫入,使用特定規則

在擲骰子,軋製線賭注如下進行的遊戲:兩個六面骰子旋轉;擲骰子擲骰子的第一卷被稱爲「滾出來」。一張7或11張牌會自動獲勝,一張2,3或12張牌會自動失敗。如果4,5,6,8,9或10在滾出時滾動,則該數字變成「點」。玩家繼續滾動骰子直到7或點被擲出。如果該點先滾動,則玩家贏得下注。如果7先滾動,則玩家失去

編寫一個程序來模擬使用這些規則的擲骰子而無需人工輸入。程序應該計算玩家是贏還是輸,而不是要求下注。程序應該模擬滾動兩個骰子並計算總和。添加一個循環,以便程序多次播放。添加計數器,計算玩家獲勝的次數以及玩家丟失的次數。在玩遊戲幾次,計算機美酒(勝/罪+損失)的可能性到底)和輸出值

,這是我做的,到目前爲止

import java.util.Scanner; 

    public class partb1 
{ 

    public static void main(String[] args) 
{ 

int side1=1, side2=1 , roll=1, lose=0, win=0, point=0, answer; 
    Double winprob, loseprob; 

side1= 1+(int)(Math.random() *6); 

    side2= 1+(int)(Math.random() *6); 

    Scanner kb = new Scanner(System.in); 

    do 
    { 
    roll = side1+side2; 


    if (roll == 7 || roll == 11) 
    { 
     System.out.println(" Come out wins"); 
    winprob = win + 1; 

    } 
    else if (roll ==2 || roll ==3 || roll ==12) 
    { 
     System.out.println(" Come out loses "); 
     loseprob = lose +1; 

    } 

    else 
    { 
      side1= 1+(int)(Math.random() *6); 
    side2= 1+(int)(Math.random() *6); 
    point = roll; 
    roll = side1+side2; 

     System.out.println("The point"); 
     System.out.println("You won the bet"); 
     winprob = win + 1; 
    while(roll != point || roll!= 7); 
     side1= 1+(int)(Math.random() *6); 
    side2= 1+(int)(Math.random() *6); 
    roll = side1+side2; 

    } 



    if(roll ==7) 

    { 
     System.out.println("You lost the bet"); 
    answer = kb.nextInt(); 
    } 
    else if (roll == point) { 
     System.out.println(win); 
    } 

    while(true) 
     { 
    System.out.println(" Do you want to play again? 0 for No, any number for Yes "); 

        if (answer ==0) 
        { 
         break; 
        } 

        winprob = (40/(40+60)); 
        System.out.println(" The probability of wining is " + winprob); 

        loseprob = (40/(40-60)); 
        System.out.println(" The probability of losing is " + loseprob); 




     } 
     } 
     } 
     } 

我不斷收到這錯誤

1 error found: 
    File: H:\assignment 3\partb1.java [line: 84] 
    Error: Syntax error, insert "while (Expression) ;" to complete DoStatement 

我不知道我錯過了什麼或做錯了什麼? 任何線索?

+0

'wins/sins + losses''sins'代表用戶發出多少次罵人的聲音? – CAbbott 2013-02-21 21:17:09

+0

這只是贏得和輸的概率,我將需要在程序中包含它們兩個 – Ryan 2013-02-21 21:22:28

回答

0

answerìnt不是boolean所以在while聲明中表達自身不能出現,但因爲你明確break圈外的你可以這樣做:

while (true) { 
+0

謝謝!第一個錯誤已解決,第二個問題是因爲休息是在循環之外 – Ryan 2013-02-21 21:17:30

0

由於清潔問題編程,我建議不要像

public static void main(String[] args) { 
    // do everything here 
} 

創造的東西應用封裝的概念,你的編程和代碼分解成可重複使用的塊。你會發現更容易調試你的代碼,其他程序員會喜歡它。

0

代碼中存在多個錯誤,儘管我們很樂意幫助您完成作業;但如果您先將代碼正確對齊到適當的IDE中,以便您可以看到所有簡單的錯誤 - 比如花括號不匹配或丟失的地方。我可以建議下載IntelliJ IDEA(或同等版本),加載你的java程序,並打CRTL-ALT-L「重新格式化」代碼。這將使其更具可讀性,並且更易於修復。

此外,IDE還可以幫助您跟蹤誤差

例如有一個多餘的分號在這裏,和代碼的格式化使得它明顯(尋找「紅色」墨水!):

 } else if (roll == point) ; 
     System.out.println(win); 

也許應該是

 } else if (roll == point) { 
      System.out.println(win); 
     } 

一旦你的語法想通了,爲什麼不使用你的類中的一些方法和字段?例如,您可以使用方法win()lose()以及適當的字段。

祝你好運!

+0

非常感謝!我一回家就會下載程序。同時,在編輯該問題後,我得到了這些錯誤:找到3個錯誤: File:E:\ assignment 3 \ partb1.java [line:83] Error:while expected File:E:\ assignment 3 \ partb1.java [行:85] 錯誤:表達式的非法開始 文件:E:\賦予3 \ partb1.java [行:85] 錯誤:解析時到達文件結尾 – Ryan 2013-02-21 21:58:57

+0

無憂Ryan,高興地幫助。你可以編輯和發佈你現在的代碼嗎?你需要確定每個擲骰子游戲是如何結束的(win?lose? - >'break;'out of do/while循環?),以及如何/在哪裏處理用戶輸入,其中answer = kb.nextInt() '正確。 – vikingsteve 2013-02-21 22:01:59

+0

我編輯了這篇文章。那麼每次輸球或贏球后我都需要打破嗎? – Ryan 2013-02-21 22:07:56