COMP SCI 101 / JAVA创建具有1000个随机整数的阵列,然后执行频率计数并计算平均值

时间:2013-10-21 00:43:38

标签: java

这是一项编程工作,我遇到了一些麻烦。我不能使用课堂上没有教给我们的任何东西。我相信我的代码可能是多余的(我想我有一个太多的计数控制循环)。

以下是问题:

创建一个填充数组的应用程序,其中包含1000个随机整数,每个整数在1到10之间。然后,您的程序应执行频率计数 - 有多少元素等于1,有多少元素等于2等等所有10可能的价值观您的程序还应计算值的平均值。您的应用程序应将整齐格式的摘要报告输出到包含摘要结果的文本文件,而不是整个数组。

我相信我已经创建了一个数组,该数组在1到10之间正确填充了1000个随机整数。当我到达问题的频率计数部分时,我需要它输出等于1的整数的精确数,等于2,依此类推。目前我的输出是打印每个等于1的随机值,而不是等于1的确切数值。

这是我的代码:非常感谢任何帮助。另外我想我可能有一个太多的计数控制循环。也许那是我的问题?

/**
 * This method fills an array with 1,000 random integers, each between 
 * 1 and 10.
 */
public static void main(String[] args) {
    int [] num = new int[1000]; //an array of 1000 integers
    int i; //used as an array index

    for( i= 0; i < 1000; i++)
        num[i] = 1+(int) (Math.random()*((10-1)+1)); 
 //math.Random generates a number between 0 and 1, this method calls for numbers
    //to be between 1 and 10. To make this possible, I need to multiply
    //the math.random by the max-min and add 1 to make sure it generates
    //1,000 random integers between 1 and 10.

    int count1;  //used to count how many integers are equal to 1
    System.out.println ("Integers equal to 1");
    //this loop prints the values in the array
    for(i=0; i<1000; i++)
        if (num[i] == 1)
        {
            i++;
            System.out.println(i + "of the random 1000 integers are equal to 1.");
        }

这是我用于创建代码的教科书中的信息。

首先将变量countEven初始化为零,然后,当我们迭代数组时,我们将递增每个偶数Fibonacci数的计数。为了测试偶数,我们将使用Java的剩余操作(%),它返回整数除法运算的余数。如果除以2时余数为零,则数字为偶数。

int[] fib = {0,1,1,2,3,5,8,13,21,34} // an array initialized with Fibonacci numbers
int i;// used as an array index
int countEven; used to count how many of the first 10 Fibonacci numbers are even
System.out.println(“Even Fibonacci numbers” );
// this loop prints the values in the array
for( i= 0; i < fib.length; i++)
if (fib[i] % 2 == 0)
{
count++;
System.out.println( fib[i] + “ is even”);
}
system.out.println ( count + “ of the first 10 Fibonacci numbers are even”);

输出如下: 甚至斐波那契数字 0是偶数 2是偶数 8是偶数 34是偶数 前10个斐波那契数中有4个是偶数。

2 个答案:

答案 0 :(得分:2)

你有几个问题。在块中

if ( num[i] == 1 ) {
    i++;
    System.out.println(i + "of the random 1000 integers are equal to 1.");    
}

您正在递增i,而不是count1

此外,每次if ( num[i] == 1 )为真时,您都会打印出结果,而不是仅在结束时打印一次。

答案 1 :(得分:0)

for(i=0; i<1000; i++)
        if (num[i] == 1)
        {
            i++;
            System.out.println(i + "of the random 1000 integers are equal to 1.");
        }

将上面的代码更改为:

for(i=0; i<1000; i++)
        if (num[i] == 1)
        {
            count1++;
        }
System.out.println(count1 + "of the random 1000 integers are equal to 1.");

看看你能不能得到你想要的东西。