Java 掷两个骰子得到一个7
我试着让骰子滚动直到得到7,然后记录下通过测试得到7的总次数。一旦所有的试验都完成了,我需要对它们进行平均。现在我输入了试验次数,但它运行了“for循环”的第一部分(“试验1:”),然后不做任何其他事情。我错过了什么?这是在dr.JavaIDE中完成的 ***while循环后的Edit*分号是最初的问题。现在我遇到了另一个。循环产生相同的输出(如图所示)。 输入随机数生成器的种子值: [1] 输入试验次数: [10] 试玩#1:10掷骰到7掷骰 试玩#2:10掷骰到7掷骰 试玩#3:10掷骰到7掷骰 试用版#4:10掷骰到7掷骰 试玩#5:10掷骰到7掷骰 试玩#6:10掷骰到7掷骰 试用版#7:10卷到7卷 试玩#8:10掷骰到7掷骰 试玩#9:10掷骰到7掷骰 试玩#10:10掷骰到7掷骰 在10次试验中,平均滚动1.0次,滚动7次**Java 掷两个骰子得到一个7,java,Java,我试着让骰子滚动直到得到7,然后记录下通过测试得到7的总次数。一旦所有的试验都完成了,我需要对它们进行平均。现在我输入了试验次数,但它运行了“for循环”的第一部分(“试验1:”),然后不做任何其他事情。我错过了什么?这是在dr.JavaIDE中完成的 ***while循环后的Edit*分号是最初的问题。现在我遇到了另一个。循环产生相同的输出(如图所示)。 输入随机数生成器的种子值: [1] 输入试验次数: [10] 试玩#1:10掷骰到7掷骰 试玩#2:10掷骰到7掷骰 试玩#3:10掷骰到7
import java.util.*;
public class Geometric {
public static void main(String[] args) {
//create the Scanner and the Random number generator using a given seed
Scanner scnr = new Scanner(System.in);
System.out.println("Enter the seed value for the random number generator:");
int seed = scnr.nextInt();
Random r = new Random(seed);
//TODO: complete the program
System.out.println("Enter the number of trials:");
int trials = scnr.nextInt();
int sum = 0;
int count = 0;
int diceAdded = 0;
for (int i=1;i<=trials;i++) {
System.out.print("Trial #" + i + ": ");
while (diceAdded != 7) {
int dice = r.nextInt(6)+1;
int dice2 = r.nextInt(6)+1;
diceAdded = dice + dice2;
count++;
}
System.out.println(count + " rolls to roll a 7.");
sum = count;
}
double average = (sum/trials);
System.out.println("Average " + average + " rolls to roll a 7 over " + trials + " trials.");
}
}
import java.util.*;
公共类几何{
公共静态void main(字符串[]args){
//使用给定种子创建扫描仪和随机数生成器
扫描仪scnr=新扫描仪(System.in);
System.out.println(“输入随机数生成器的种子值:”);
int seed=scnr.nextInt();
随机r=新随机(种子);
//TODO:完成程序
System.out.println(“输入试验次数:”);
int trials=scnr.nextInt();
整数和=0;
整数计数=0;
int=0;
对于(inti=1;i而言,在“Trial#1:”中停止的主要问题是,while
立即停止,因为分号
将while(diceAdded!=7);{
更改为while(diceAdded!=7){
在“试验1:”中停止的主要问题是,您的while
立即停止,因为分号
将while(diceAdded!=7);{
更改为while(diceAdded!=7){
除了您已经指出的分号输入错误之外,您不会在for
循环中重置变量,因此每次迭代都将在相同的值上执行
通过将您的计数
和变量移动到for
循环中来解决此问题:
System.out.println("Enter the number of trials:");
int trials = scnr.nextInt();
int sum = 0;
for (int i=1;i<=trials;i++) {
System.out.print("Trial #" + i + ": ");
int count = 0;
int diceAdded = 0;
while (diceAdded != 7) {
int dice = r.nextInt(6)+1;
int dice2 = r.nextInt(6)+1;
diceAdded = dice + dice2;
count++;
}
System.out.println(count + " rolls to roll a 7.");
sum += count;
}
除了已经指出的分号输入错误外,在for
循环中没有重置变量,因此每次迭代都将在相同的值上执行
通过将您的计数
和变量移动到for
循环中来解决此问题:
System.out.println("Enter the number of trials:");
int trials = scnr.nextInt();
int sum = 0;
for (int i=1;i<=trials;i++) {
System.out.print("Trial #" + i + ": ");
int count = 0;
int diceAdded = 0;
while (diceAdded != 7) {
int dice = r.nextInt(6)+1;
int dice2 = r.nextInt(6)+1;
diceAdded = dice + dice2;
count++;
}
System.out.println(count + " rolls to roll a 7.");
sum += count;
}
这是Java,不是JavaScript。请不要不断编辑您的问题以反映新的问题和发展。如果您有新的问题(即使它与您的原始问题相关),创建一个新问题。请记住,堆栈溢出的目的不仅仅是帮助您,而是创建一个资源,在一段时间内帮助程序员解决特定问题。为此,要求人们达到一个移动的目标是适得其反的,即使它在短期内对您有所帮助。这是Java,而不是JavaScript。请不要继续编辑您的问题以反映新问题和发展。如果您有新问题(即使它与您的原始问题相关),创建一个新问题。请记住,堆栈溢出的目的不仅仅是帮助您,而是创建一个资源,在一段时间内帮助程序员解决特定问题。为此,要求人们实现移动目标是适得其反的,即使它在短期内对您有所帮助。还有double average=(sum/trials);
由于整数除法,最终肯定会产生错误的结果。此外,双平均=(求和/试验);
由于整数除法,最终肯定会产生错误的结果。