0

这是问题:

在掷骰子游戏中,及格线下注过程如下:掷出两个六面骰子;掷骰子的第一轮骰子称为“出局”。7 或 11 的出局自动获胜,2,3 或 12 的出局自动失败。如果 4、5、6、8、9 或 10 在出局掷骰上掷出,则该数字成为“点数”。玩家不断掷骰子,直到掷出 7 点或点数。如果点数先滚动,则玩家赢得赌注。如果先掷出 7,则玩家输

编写一个程序,在没有人工输入的情况下使用这些规则模拟掷骰子。程序应该计算玩家是赢还是输,而不是要求下注。程序应该模拟掷两个骰子并计算总和。添加一个循环,以便程序播放几次。添加计数器来计算玩家赢了多少次,以及玩家输了多少次。在玩几次游戏结束时,计算获胜概率(wins/sins+losses))并输出值

这就是我到目前为止所做的

  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

我不确定我是错过了什么还是做错了什么?有什么线索吗?

4

3 回答 3

0

作为一个干净的编程问题,我建议不要创建类似的东西

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

将封装的概念应用到您的编程中,并将您的代码分解为可重用的块。您会发现调试代码要容易得多,其他程序员也会因此而爱上您。

于 2013-02-21T21:18:32.537 回答
0

answeris an ìntnot aboolean所以不能单独出现在while语句表达式中,但是由于您明确break退出循环,您可以执行以下操作:

while (true) {
于 2013-02-21T21:14:27.250 回答
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()字段。

祝你好运!

于 2013-02-21T21:33:41.867 回答