java 骰子_基本随机滚动骰子Java

5 个答案:

答案 0 :(得分:12)

Random.nextInt()具有不可预测的行为 - 它可以为整数生成所有可能的值,包括负数。改为使用Random.nextInt(numSides) - 它将从[0,numSides]返回一个整数,即包括0并排除numSides。要获得所需的功能[1,数字],请使用

r.nextInt(numSides)+1;

有关详细信息,请参阅here。

答案 1 :(得分:5)

您只需要初始化Random r和int roll,因此我已将其从循环中移除。 nextInt(int)方法从0中选择一个整数,但不包括int。这被称为0(包括)到int(不包括),因此您必须添加1以调整到模具的范围。你似乎已经知道,虽然我不知道你为什么使用%。使用*乘以会给你所有骰子的相同数字,我不相信你的意思。以下是您班级的一种可能实施方式:

import java.util.Random;

public class Dice {

public static int rollDice(int number, int nSides)

{

int num = 0;

int roll = 0;

Random r = new Random();

if(nSides >=3)

{

for(int i = 0; i < number; i++)

{

roll = r.nextInt(nSides)+1;

System.out.println("Roll is: "+roll);

num = num + roll;

}

}

else

{

System.out.println("Error num needs to be from 3");

}

return num;

}

public static void main(String[] args)

{

System.out.println("Total is: "+rollDice(3, 6));

}

}

/*

Roll is: 4

Roll is: 1

Roll is: 2

Total is: 7

*/

答案 2 :(得分:2)

替换

int roll = r.nextInt();

int roll = r.nextInt(nSides);

答案 3 :(得分:0)

如果对负数使用%,则会得到负数。

在这种情况下,解决方案很简单,使用

int roll = r.nextInt(nSides) + 1; // 1 to nSizes

num += roll;

答案 4 :(得分:0)

这与rollDice方法有关:

public static int rollDice(int number, int nSides) {

int count = 0;

for(int i = 0; i < number; i++) {

count += (int)(Math.random() * nSides) + 1;

}

return count;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值