Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.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,我正在研究这个问题,但我不知道如何获得一个数组来跟踪main中的rolls,以及如何循环调用执行rolls的方法。(请帮助我,我正在自己做这件事,没有老师。) 问题是: 编写一个模拟掷两个骰子的程序。提示用户输入掷骰子的数量。使用循环重复调用一个方法,该方法模拟掷骰子并将两个骰子的总数返回给main。在main中以数组形式跟踪转鼓,并通过显示转鼓结果结束程序 样本输出: How many times should I roll the dice? 100 Results for 100 dice

我正在研究这个问题,但我不知道如何获得一个数组来跟踪main中的rolls,以及如何循环调用执行rolls的方法。(请帮助我,我正在自己做这件事,没有老师。)

问题是:

编写一个模拟掷两个骰子的程序。提示用户输入掷骰子的数量。使用循环重复调用一个方法,该方法模拟掷骰子并将两个骰子的总数返回给main。在main中以数组形式跟踪转鼓,并通过显示转鼓结果结束程序

样本输出:

How many times should I roll the dice? 100
Results for 100 dice rolls 
2 was rolled 4 times
3 was rolled 2 times
4 was rolled 1 times
5 was rolled 8 times
6 was rolled 15 times
7 was rolled 16 times
8 was rolled 17 times
9 was rolled 18 times
10 was rolled 10 times
11 was rolled 6 times
12 was rolled 3 times
到目前为止,我的代码是:

import java.util.Scanner; 
public class TestingCenter {
    private static Scanner input;   
    public static void main(String[] args){ 

        System.out.println("How many times should I roll the dice? ");
        int answer = input.nextInt();
        for (int x = 0; x < answer; x++) {  


        }
    }


    public static int amount(int x){
            int die1;   
            int die2;   
            int roll;  
            die1 = (int)(Math.random()*6) + 1;
            die2 = (int)(Math.random()*6) + 1;
            roll = die1 + die2;
            return roll;

}
}
import java.util.Scanner;
公共类考试中心{
专用静态扫描仪输入;
公共静态void main(字符串[]args){
System.out.println(“我应该掷多少次骰子?”);
int answer=input.nextInt();
对于(intx=0;x
导入java.util.Arraylist
并简单地将每个值添加到列表中,作为循环
应答的次数

public static void main(String[] args)
{ 
    input = new Scanner(System.in);
    System.out.println("How many times should I roll the dice? ");
    int answer = input.nextInt();
    List<Integer> list = new ArrayList<Integer>();
    for (int x = 0; x < answer; x++)
    {  
        list.add(amount(x));
    }
}
publicstaticvoidmain(字符串[]args)
{ 
输入=新扫描仪(System.in);
System.out.println(“我应该掷多少次骰子?”);
int answer=input.nextInt();
列表=新的ArrayList();
for(int x=0;x
导入java.util.Arraylist
并简单地将每个值添加到列表中,作为循环
应答的次数

public static void main(String[] args)
{ 
    input = new Scanner(System.in);
    System.out.println("How many times should I roll the dice? ");
    int answer = input.nextInt();
    List<Integer> list = new ArrayList<Integer>();
    for (int x = 0; x < answer; x++)
    {  
        list.add(amount(x));
    }
}
publicstaticvoidmain(字符串[]args)
{ 
输入=新扫描仪(System.in);
System.out.println(“我应该掷多少次骰子?”);
int answer=input.nextInt();
列表=新的ArrayList();
for(int x=0;x
您可以创建一个
HashMap
,其中一个键包含滚动结果,第二个值是该结果的滚动次数。它会给出这样的结果:

HashMap<Integer, Integer> results = new HashMap<Integer, Integer>();

for (int x = 0; x < answer; x++) {  
     int roll = amount(x);
     if(results.get(roll) == null) {
          results.put(roll, 1);
     } else {
          results.put(roll, results.get(roll) +1);
     }
}
HashMap results=newhashmap();
对于(intx=0;x

然后,在打印时,只需对
循环(从1到12)执行一个
,然后获得与每个循环数字相关联的值。

您可以创建一个
HashMap
,其中一个键包含滚动结果,第二个值是该结果的滚动次数。它会给出这样的结果:

HashMap<Integer, Integer> results = new HashMap<Integer, Integer>();

for (int x = 0; x < answer; x++) {  
     int roll = amount(x);
     if(results.get(roll) == null) {
          results.put(roll, 1);
     } else {
          results.put(roll, results.get(roll) +1);
     }
}
HashMap results=newhashmap();
对于(intx=0;x

然后,在打印时,您只需对
循环执行一次
(从1到12),然后获得与每个循环数字相关的值。

您可以尝试类似的操作(注释中的解释):


您可以尝试以下方式(在评论中解释):


这是使用
main
方法中的
int[]
实现的:

import java.util.Random;
import java.util.Scanner;

public class TestingCenter {

private static final Random random = new Random();

public static void main(final String[] args) {

    System.out.println("How many times should I roll the dice? ");
    int answer = 0;
    try (Scanner scanner = new Scanner(System.in)) {
        answer = scanner.nextInt();
    }
    final int[] results = new int[11];
    for (int x = 0; x < answer; x++) {
        results[amount() - 2]++;
    }
    System.out.println(String.format("Results for %s dice rolls ", answer));
    for (int i = 0; i < 11; i++) {
        System.out.println(String.format("%s was rolled %s times", i + 2, results[i]));
    }
}

    public static int amount() {
        return random.nextInt(6) + random.nextInt(6) + 2;

    }
}

这是使用
main
方法中的
int[]
实现的:

import java.util.Random;
import java.util.Scanner;

public class TestingCenter {

private static final Random random = new Random();

public static void main(final String[] args) {

    System.out.println("How many times should I roll the dice? ");
    int answer = 0;
    try (Scanner scanner = new Scanner(System.in)) {
        answer = scanner.nextInt();
    }
    final int[] results = new int[11];
    for (int x = 0; x < answer; x++) {
        results[amount() - 2]++;
    }
    System.out.println(String.format("Results for %s dice rolls ", answer));
    for (int i = 0; i < 11; i++) {
        System.out.println(String.format("%s was rolled %s times", i + 2, results[i]));
    }
}

    public static int amount() {
        return random.nextInt(6) + random.nextInt(6) + 2;

    }
}

您的问题是什么?我发现您没有初始化扫描仪
scanner input=new scanner(System.in)第二次你没有调用你的方法
amount
你有什么问题?我发现你没有初始化扫描仪
扫描仪输入=新扫描仪(System.in)第二次你不调用你的方法
amount
我可以看到我遗漏了一些东西,但是我如何让输出看起来像我展示的样本,如何让它计算每个数字滚动的次数?@Yahya请查看你的输出并将次数(尝试次数)相加,它大于10。阅读问题并回顾你的答案。@michael,我明白了,你想要的是总数,只是每个问题的总数round@TarasShpulyar这是我朋友的总数:)我可以看出我遗漏了一些东西,但我如何让输出看起来像我展示的样本,我如何让它计算每个数字的滚动次数?@Yahya请查看您的输出并将大于10的次数(尝试次数)相加。阅读问题并回顾你的答案。@michael,我明白了,你想要的是总数,只是每个问题的总数round@TarasShpulyar这是我的朋友:)我的朋友,这个答案不能解决OP问题。请编辑或删除。@Yahya让OP来决定。我的朋友,这个答案不能解决OP的问题。请编辑或删除。@Yahya由OP决定。