Java 试图编写一个程序,用特定的规则模拟垃圾
问题是: 在掷骰子游戏中,通过线下注的过程如下:掷两个六面骰子;掷骰子回合的第一轮骰子被称为“出骰”。出骰7或11自动赢,出骰2、3或12自动输。如果4、5、6、8、9或10在输出卷上滚动,则该数字成为“点”。玩家继续掷骰子,直到掷到7或点为止。如果先掷点数,则玩家赢得赌注。如果先掷7,则该玩家将输球 编写一个程序,在没有人工输入的情况下使用这些规则模拟垃圾。程序应该计算玩家是赢还是输,而不是要求下注。程序应该模拟掷两个骰子并计算总和。添加一个循环,使程序播放多次。添加计数器,计算玩家赢和输的次数。在几次游戏结束时,计算机计算获胜概率(赢/负+输),并输出值 这就是我到目前为止所做的Java 试图编写一个程序,用特定的规则模拟垃圾,java,Java,问题是: 在掷骰子游戏中,通过线下注的过程如下:掷两个六面骰子;掷骰子回合的第一轮骰子被称为“出骰”。出骰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。我做了一些修改,更新了帖子