为了账号安全,请及时绑定邮箱和手机立即绑定

使用带有来自随机生成器的值的一维数组编写程序,以打印出每个组合被一对骰子掷出的次数

使用带有来自随机生成器的值的一维数组编写程序,以打印出每个组合被一对骰子掷出的次数

慕勒3428872 2021-11-24 15:55:30
分配的目标是使用并行的一维数组,但也允许使用二维数组。我可以打印出不同的组合,例如由一对骰子滚动的 1,1(也称为蛇眼)。试图打印出每个组合滚动的次数而不打印组合的滚动次数是很困难的。前任:输入您想要掷骰子的次数:5你掷了:1 和 5 共 1 次- 我不想要的您掷出:4 和 3 共 1 次你滚动了:1 和 5 总共 2 次 - 对于重复,这就是我想要打印的全部内容您掷出:3 和 3 共 1 次您掷出:2 和 2 共 1 次我知道在增加组合数组(保存每个组合的滚动次数)后立即打印出来的循环是不正确的,但我坚持如何修改它。我认为组合 [0][0] 是 1,1 被滚动的次数,组合 [0][1] 是 1,2 被滚动的次数,依此类推。import java.util.Scanner;public class Dice {Scanner read = new Scanner(System.in);    Random diceRoll = new Random();    int numRolls;    int[] dice1 = new int [1000];    int[] dice2 = new int [1000];    int[][] combo = new int[6][6];public void getRolls() {    System.out.println("Enter the number of times you want to roll a pair of dice: ");    numRolls = read.nextInt();    dice1 = new int[numRolls];    dice2 = new int[numRolls];    for (int i = 0; i < dice1.length; i++)    {        dice1[i] = diceRoll.nextInt(6) + 1;        dice2[i] = diceRoll.nextInt(6) + 1;    }    System.out.println("\n");    for (int j = 0; j < combo.length; j++)    {        for (int k = 0; k < combo[0].length; k++)        {            combo[j][k] = 0;        }    }   for (int m = 0; m < numRolls; m++)    {        combo[dice1[m] - 1][dice2[m] - 1]++;        System.out.println("You rolled: " + dice1[m] + " and " +         dice2[m] + " a total of " + combo[dice1[m] - 1][dice2[m] - 1] +         " times");    }
查看完整描述

2 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

您应该将组合计算循环与打印循环分开。如果订单与您所说的不相关,那应该会为您提供您正在寻找的正确输出。快乐编码!


查看完整回答
反对 回复 2021-11-24
?
万千封印

TA贡献1891条经验 获得超3个赞

自我回答:


我将打印循环与组合计算循环分开。如果组合的组合值为 1,那么我只需将其打印出来,说明它已滚动 1 次。如果组合的组合值大于 1,我会在第一次出现时将其打印出来,说明它被掷了很多次,然后将该组合的组合值设置为 0。只有组合值至少为 1 的组合被打印,所以不能打印重复的行(即 1,1 滚动 4 次现在只打印一行而不是 4 个单独的行)。


    for (int m = 0; m < numRolls; m++)

    {

        combo[dice1[m] - 1][dice2[m] - 1]++;

    }


    for (int m = 0; m < numRolls; m++)

    {

        if (combo[dice1[m] - 1][dice2[m] - 1] > 1)

        {

            System.out.println("You rolled: " + dice1[m] + " and " + dice2[m] + " a total of " + combo[dice1[m] - 1][dice2[m] - 1]   + " time(s)");

            combo[dice1[m] - 1][dice2[m] - 1] = 0;

        }


        if (combo[dice1[m] - 1][dice2[m] - 1] == 1)

        {

        System.out.println("You rolled: " + dice1[m] + " and " + dice2[m] + " a total of " + combo[dice1[m] - 1][dice2[m] - 1] + " time(s)");

        }

    }


查看完整回答
反对 回复 2021-11-24
  • 2 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信