gpt4 book ai didi

Java:掷骰子和不正确的总和

转载 作者:行者123 更新时间:2023-12-01 13:30:42 28 4
gpt4 key购买 nike

我正在做一个掷骰子项目,但有点卡住了。我对 Java 编程和使用数组还是新手,所以我确信我搞砸了一些事情。最终目标是输出一个包含掷骰数量的表(我拥有并工作),然后根据掷出的骰子数量将骰子掷出的总和相加。该表可以工作,但我无法计算总和。如果我掷 4 个骰子,我得到的总和仍然是 1-3。有人可以给我一个合作的线索吗?我被困住了! ):

import javax.swing.*;
import java.util.Random;

public class Lab1 {

private static int N = 0;
private static int M = 0;
private static int total = 0;
private static Random rnd = new Random();
private final static int FACENUMBER = 6;
private static int faceValue = 1;

public Lab1() {
}

public static void main(String[] args) {

N = Integer.parseInt(JOptionPane.showInputDialog("How many dice would you like to roll?"));
System.out.println("Dice: " + N);

M = Integer.parseInt(JOptionPane.showInputDialog("How many times would you like to roll?"));
System.out.println("Rolls: " + M);

System.out.println();

int total[] = new int[(M) + 1];

for (int roll = 1; roll <= M; roll++) {
total[roll] = rnd.nextInt(FACENUMBER * N) + 1;
}

System.out.printf("%3s%12s\n", "Rolls", " Sum of Rolls");

for (int k = 1; k < total.length; k++) {
System.out.printf("%3s%12s\n", k, total[k]);
}
}
}

最佳答案

使用:

rnd.nextInt(FACENUMBER*N)+1;

您将获得一个介于 1(FACENUMBER*N)+1 之间的随机数

如果用户输入 10 代表 N,则每次滚动都会得到一个介于 161 之间的数字,而实际上您想要的数字介于 10 之间和60。你想要的是:

rnd.nextInt((FACENUMBER-1)*N)+N

但这不是模拟骰子的正确方法。考虑到只有一种方法可以掷出 60,但掷出其他总数(例如 30)的方法有很多种。以下解决方案更好:

for(int roll=0; roll<N; roll++) {
total[roll] = rnd.nextInt(FACENUMBER)+1
}

关于Java:掷骰子和不正确的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21587797/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com