2

我正在为我的计算机课程做作业,我们的任务是编写一个方法来分析数组“数字”并返回一个表示每个数字的数组,它作为前导数字出现的次数...

即 { 100, 200.1, 9.3, 10} 然后 1 作为前导数字出现 50% 的时间,2 出现在 25% 的时间,9 出现在 25% 的时间,所以您生成的数组应该包含:{0, .5, .25, 0, 0, 0, 0, 0, 0, .25}

我在开始时遇到问题,建议我们编写一个名为 countLeadingDigits 的辅助方法,它返回每个数字的计数数组,然后才计算百分比。我不知道如何编写从用户那里获取未知数量的输入双精度然后存储每个数字作为前导数字出现的次数的方法。我已经编写了计算的代码部分领先的数字。请问有什么提示吗?

4

1 回答 1

1

简短而密集的代码的解决方案:

public static void main(String[] args)
{
    double[] inputs = { 100, 200.1, 9.3, 10 , -100 }; // your inputs
    double sum = inputs.length;

    int[] leadingDigitCounters = new int[10]; // counters for 0...9

    // Here is how you increment respective leading-digit counters
    for (double d : inputs) 
    {
        int j = Integer.parseInt((d + "").replace("-", "").charAt(0) + "");
        leadingDigitCounters[j]++;
    }   

    // Printing out respective percentages
    for (int i : leadingDigitCounters)
        System.out.print((i / sum) + " ");
}

输出:

0.0 0.6 0.2 0.0 0.0 0.0 0.0 0.0 0.0 0.2

于 2012-10-20T19:57:49.763 回答