我无法弄清楚如何编写Java代码以使其获取输入数组然后进行计算,这是完整的问题:
编写一个方法
calculateLeadingDigitProportions
作为输入 一个double[]
个数字并返回double[]
。该方法应该 分析数组编号并返回表示每个数组的数组 数字,它作为前导数字出现的次数的比例。在里面 生成数组,第0个索引处的值应该代表 0为前导数字的次数的比例(仅在时间为0时出现) 截断到int之后的数字是0,即第一个索引处的值 将包含1为领先数字的时间比例, 等等,直到第9个指数。例如,如果数字包含:{ 100, 200.1, 9.3, 10}
然后1%作为前导数字出现50%的时间,2发生25%的时间,9发生25%的时间,所以你生产的数组 应该包含:{0, .5, .25, 0, 0, 0, 0, 0, 0, .25}
您可以使用 方法calculateLeadingDigit
执行此操作,但请注意该方法 期望输入int
,因此您需要投射或执行 以某种其他方式转换。请注意,如果数字小于1 但是大于0可以在a之后调用前导数字0 截断。提示:此方法非常复杂。你可能会觉得写它很有用 一个称为帮助器的方法,例如,
countLeadingDigits
返回每个数字的计数数组,然后才计算 百分比
答案 0 :(得分:2)
只是一些提示:
您的方法calculateLeadingDigitProportions
将double[]
作为输入。您需要一个循环来扫描数组并检查每个值。
您需要计算每个数字(0 - 9)是输入数组中前导数字的次数。您在评论中提到您不能使用ArrayList
,但您不需要。您已经知道从0到9有多少位数,因此您可以在开始扫描输入数组之前创建一个正确大小的数组。
您的说明提到了calculateLeadingDigit
方法。我不承认这一点,所以我认为这是由你的导师给出的。用它来查找每个输入值的前导数字,然后递增该数字的计数器。
一旦掌握了所有计数,就很容易找出每个数字所占总数的比例。
答案 1 :(得分:0)
我会认真对待作业中提供的提示。您的输出数组显然需要10个长(每个数字一个)。使用中间数组计算每个数字作为前导数字出现的次数。这可以通过输入数组,确定前导数字,并将其用作递增计数数组的相应元素的索引来轻松完成。然后你只需要通过除以值的总数(这只是输入数组的长度)将原始计数转换为0到1之间的比例。