2013-02-21 65 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