如何扫描数组以获取特定信息

时间:2012-10-27 10:56:50

标签: java arrays

自9月底以来,我一直在做一个MSc软件开发转换课程,其主要语言是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++;
        }
    }
  }
}

谢谢, 安德鲁

2 个答案:

答案 0 :(得分: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]);

答案 1 :(得分: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]是您拥有的1个,countingArray[1]是您拥有的2个等等。例如,xcountingArray[x - 1] 1到10(包括1和10),x是您拥有的{{1}}个数字。