获取未知长度的输入数组然后分析它... Java

时间:2012-10-23 00:02:50

标签: java arrays

我无法弄清楚如何编写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   返回每个数字的计数数组,然后才计算   百分比

2 个答案:

答案 0 :(得分:2)

只是一些提示:

  • 您的方法calculateLeadingDigitProportionsdouble[]作为输入。您需要一个循环来扫描数组并检查每个值。

  • 您需要计算每个数字(0 - 9)是输入数组中前导数字的次数。您在评论中提到您不能使用ArrayList,但您不需要。您已经知道从0到9有多少位数,因此您可以在开始扫描输入数组之前创建一个正确大小的数组。

  • 您的说明提到了calculateLeadingDigit方法。我不承认这一点,所以我认为这是由你的导师给出的。用它来查找每个输入值的前导数字,然后递增该数字的计数器。

  • 一旦掌握了所有计数,就很容易找出每个数字所占总数的比例。

答案 1 :(得分:0)

我会认真对待作业中提供的提示。您的输出数组显然需要10个长(每个数字一个)。使用中间数组计算每个数字作为前导数字出现的次数。这可以通过输入数组,确定前导数字,并将其用作递增计数数组的相应元素的索引来轻松完成。然后你只需要通过除以值的总数(这只是输入数组的长度)将原始计数转换为0到1之间的比例。