【问题标题】:How do I use an array to calculate percentages using randomly generated values?如何使用数组使用随机生成的值计算百分比?
【发布时间】:2019-04-24 20:48:24
【问题描述】:

我需要我的程序显示两个骰子的总和出现频率的预期百分比和实际百分比。我无法获得预期的百分比来显示数组,它总是显示为 0。我不确定如何使用随机值计算实际百分比。

我希望输出显示为小数或分数,但我只得到零。

【问题讨论】:

  • @Marvin OP 还需要将expectedactual 的类型更改为floatdouble,并将printf 格式字符串更改为"%8d %10d %10f %20f\n"
  • 是的。并且没有任何链接有助于索引超出范围。但是我太懒了,无法获得更多信息。至少这应该是一个很好的起点。
  • Java 数组是从零开始的。所以你的 for(int i=1; i
  • expected 只有 11 个元素,而不是 13 个。

标签: java arrays random


【解决方案1】:

如果您对两个整数使用运算符/,它的行为就像整数除法一样。这意味着数组expected 将只包含零。该数组也被声明为int[],因此它不能包含十进制值。您需要将您的数字声明为浮点数并在数组定义中使用浮点字面量。

float [] expected={1f/36,2f/36,3f/36,4f/36,5f/36,6f/36,5f/36,4f/36,3f/36,2f/36,1f/36};

或者你可以使用双精度:

double [] expected={1.0/36,2.0/36,3.0/36,4.0/36,5.0/36,6.0/36,5.0/36,4.0/36,3.0/36,2.0/36,1.0/36};

【讨论】:

  • 它告诉我,当我将分子设为小数时,我无法从双精度数转换为浮点数。
  • 我编辑了我的代码。是的,你是对的 1.0 将创建双文字,我需要将其更改为 1f。
  • 谢谢,成功了!唯一的问题是值从 3.0/36 标记开始显示,并且由于某种原因忽略了前两个。我意识到这是因为循环从 i=2 开始,这是求和所必需的。我必须创建一个新循环吗?
【解决方案2】:

如果用一个整数除以另一个整数(例如 1/36,两者都是整数),结果将始终是整数。如果您不想得到 0,则需要将它们转换为双精度或浮点数。如果您快速搜索,您可以找到很多关于此的问题和答案。

【讨论】:

  • 零仍然出现,只是现在它们显示为 0.0000
猜你喜欢
  • 2012-12-28
  • 2020-05-29
  • 1970-01-01
  • 1970-01-01
  • 2013-11-15
  • 2020-06-25
  • 1970-01-01
  • 2022-07-11
相关资源
最近更新 更多