0

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

这是问题:

创建一个应用程序,用 1,000 个随机整数填充一个数组,每个整数介于 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 首先初始化为零,然后,当我们迭代数组时,我们将为每个偶数斐波那契数增加计数。为了测试偶数,我们将使用 Java 的余数运算 (%),它返回整数除法运算的余数。如果除以二时余数为零,则该数为偶数。

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 个是偶数。

4

2 回答 2

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 )都是正确的,而不仅仅是最后一次。

于 2013-10-21T00:47:00.267 回答
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.");

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

于 2013-10-21T00:50:03.680 回答