Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 试图编写一个程序,用特定的规则模拟垃圾_Java - Fatal编程技术网

Java 试图编写一个程序,用特定的规则模拟垃圾

Java 试图编写一个程序,用特定的规则模拟垃圾,java,Java,问题是: 在掷骰子游戏中,通过线下注的过程如下:掷两个六面骰子;掷骰子回合的第一轮骰子被称为“出骰”。出骰7或11自动赢,出骰2、3或12自动输。如果4、5、6、8、9或10在输出卷上滚动,则该数字成为“点”。玩家继续掷骰子,直到掷到7或点为止。如果先掷点数,则玩家赢得赌注。如果先掷7,则该玩家将输球 编写一个程序,在没有人工输入的情况下使用这些规则模拟垃圾。程序应该计算玩家是赢还是输,而不是要求下注。程序应该模拟掷两个骰子并计算总和。添加一个循环,使程序播放多次。添加计数器,计算玩家赢和输的次

问题是:

在掷骰子游戏中,通过线下注的过程如下:掷两个六面骰子;掷骰子回合的第一轮骰子被称为“出骰”。出骰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
我不确定我是错过了什么还是做错了什么?
有任何线索吗?

答案
是一个
布尔值
,因此不能在
while
语句表达式中单独出现,但由于您明确地将
从循环中断开,因此可以执行以下操作:

while (true) {

作为一个干净的编程问题,我建议不要创建像

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

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

您的代码中有多个错误,我们很乐意帮助您完成家庭作业;)如果您首先在适当的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()
以及适当的字段


祝你好运

wins/sins+loss
那么
sins
是否代表用户在退出时发了多少次誓?这只是赢和输的概率,我需要将两者都包括在程序中谢谢!第一个错误解决了,第二个问题出现了,因为突破了循环。非常感谢!我一到家就下载这个程序。同时,在编辑了这个问题之后,我发现了以下错误:发现了3个错误:文件:E:\assignment 3\partb1.java[line:83]错误:而预期的文件:E:\assignment 3\partb1.java[line:85]错误:表达式文件的非法启动:E:\assignment 3\partb1.java[line:85]错误:在解析时到达了文件的末尾。瑞安,很高兴提供帮助。你能编辑和发布你现在的代码吗?你需要弄清楚每一场掷骰子游戏是如何结束的(赢?输?->
break;
跳出do/while循环?),以及如何/在哪里正确处理用户输入的
answer=kb.nextInt()
。我编辑了这篇文章。所以每次输赢后我都需要打破吗?是的,这是打破代表一场比赛的最内层循环的最简单方法。然后您需要一个外部循环,例如,
do
while(答案==1)
玩多个游戏。目前,逻辑不正确,您的一些花括号放错了位置-请在重新格式化代码时查看,您将很容易看到其中的位置。我尝试下载IntelliJ IDEA,但由于某些原因,我无法导入任何内容。我正在使用Dr.Java。我做了一些修改,更新了帖子