2

自 9 月底以来,我一直在学习 MSc Software Development 转换课程,主要语言是 Java。我们有我们的第一个评估实际的到来,我希望得到一些指导。

我们必须创建一个数组,该数组将存储 100 个整数(所有整数都在 1 到 10 之间),这些整数由随机数生成器生成,然后每行打印出该数组的 10 个数字。对于第二部分,我们需要扫描这些整数,计算每个数字出现的频率并将结果存储在第二个数组中。

我已经完成了第一部分,但我对如何做第二部分感到困惑。我一直在查看扫描仪类,看看它是否有任何我可以使用的方法,但我没有看到任何方法。谁能指出我正确的方向 - 不是答案,而是它来自哪个库?

到目前为止的代码:

import java.util.Random;

public class Practical4_Assessed 
{

public static void main(String[] args) 
{

    Random numberGenerator = new Random ();

    int[] arrayOfGenerator = new int[100];

    for (int countOfGenerator = 0; countOfGenerator < 100; countOfGenerator++)
        arrayOfGenerator[countOfGenerator] = numberGenerator.nextInt(10);

    int countOfNumbersOnLine = 0;
    for (int countOfOutput = 0; countOfOutput < 100; countOfOutput++)
    {
        if (countOfNumbersOnLine == 10)
        {
            System.out.println("");
            countOfNumbersOnLine = 0;
            countOfOutput--;
        }
        else
        {
            System.out.print(arrayOfGenerator[countOfOutput] + " ");
            countOfNumbersOnLine++;
        }
    }
  }
}

谢谢,安德鲁

4

2 回答 2

1

您不需要任何库,只需遍历您的数组并计数:

    for (int x : arrayOfGenerator)
        ar2[x]++;

    //test with
    for (int i=0; i<ar2.length; i++)
        System.out.println("num of "+i+" ="+ar2[i]);
于 2012-10-27T11:05:42.563 回答
1

每次获得随机数时,将其存储在一个int变量中,然后递增“计数数组”的相应存储桶:

int[] countingArray = new int[10];
for (int countOfGenerator = 0; countOfGenerator < 100; countOfGenerator++) {
    // Get a number between 0 and 9 (inclusive); we'll add 1 to it in a moment
    int number = numberGenerator.nextInt(10);

    // Update your counts (array indexes start at 0, which is why we
    // haven't added to `number` yet)
    countingArray[number]++;

    // Store the actual number, which we add to because the assignment
    // is for 1-10, not 0-9
    arrayOfGenerator[countOfGenerator] = number + 1;
}

现在,countingArray[0]是你有多少1s,你有countingArray[1]多少2s,等等。例如,x1 到 10 包括哪里,你有countingArray[x - 1]多少个数x

于 2012-10-27T11:06:26.170 回答