C#根据另一个数组中的索引递增数组中的Int

时间:2018-09-21 17:47:57

标签: c# arrays increment

这个问题是关于C#编程的作业问题。该程序的目标是拥有一个0到9之间的20个整数的数组,然后有另一个20项数组,该数组在第一个数字7出现在第一个数组中的索引处递增(加1)。在下面的代码中,我有一个名为“值”的数组,该数组生成随机数。第二个名为“ sevens”的数组有20个零,如果在相应索引处找到values数组中的前7个,则可以加1。我的问题是我无法使第二个数组递增。 values数组可以正确生成数字,但是sevens数组仍为全零。如果在“值”中找到前七个,如何获得“七个”指数递增的任何建议?

class Program
{
    static void Main(string[] args)
    {
        int[] values = new int[20];
        int[] sevens = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
        0, 0, 0, 0, 0, 0 };

        Random random = new Random();
        int randValue;
        int count = 0;

        //Fills values with random integers between 0-9
        while (count < values.Length)
        {
            randValue = random.Next(10);
            values[count] = randValue;
            count++;
        }

        //Displays the contents of values
        int valuesDisplayCount = 0;
        while (valuesDisplayCount < values.Length)
        {
            Console.WriteLine("Array position {0} is {1}", valuesDisplayCount + 1, values[valuesDisplayCount]);
            valuesDisplayCount++;
        }

        while (valuesDisplayCount < values.Length)
        {
            if(values[valuesDisplayCount] == 7)
            {
                sevens[valuesDisplayCount]++;
                break;
            }
            valuesDisplayCount++;
        }

        //Displays the contents of sevens
        int sevensDisplayCount = 0;
        while (sevensDisplayCount < sevens.Length)
        {
            Console.WriteLine("Number of 7s at position {0}: {1} ", sevensDisplayCount + 1, sevens[sevensDisplayCount]);
            sevensDisplayCount++;
        }
        Console.ReadLine();
    }
}

1 个答案:

答案 0 :(得分:1)

这里的问题是,在执行使用它的第二个valuesDisplayCount循环之前,您没有将变量0重置回while。由于此变量仅在上一个循环中使用,因此它的值已经在values.Length处,因此第二个while循环永远不会运行。

要解决此问题,只需在使用该变量的第二个valuesDisplayCount = 0;循环之前添加while


解决这个问题的更好方法是改用for循环,因为这些循环默认情况下在其中包含变量初始化,进行比较并在循环开始时全部递增变量。

因此您的代码将如下所示:

int[] values = new int[20];
int[] sevens = new int[20];

Random random = new Random();

//Fills values with random integers between 0-9
for (int count = 0; count < values.Length; count++)
{
    values[count] = random.Next(10);
}

//Display the contents of 'values'
for (int valuesDisplayCount = 0; valuesDisplayCount < values.Length; valuesDisplayCount++)
{
    Console.WriteLine("Array position {0} is {1}", valuesDisplayCount + 1, 
        values[valuesDisplayCount]);
}

// Increment indexes in 'sevens' whose corresponding index in 'values' is 7
for (int valuesDisplayCount = 0; valuesDisplayCount < values.Length; valuesDisplayCount++)
{
    if (values[valuesDisplayCount] == 7)
    {
        sevens[valuesDisplayCount]++;
        break; // Only increment at the first position, so exit the for loop
    }
}

//Display the contents of 'sevens'
for (int sevensDisplayCount = 0; sevensDisplayCount < sevens.Length; sevensDisplayCount++)
{
    Console.WriteLine("Number of 7s at position {0}: {1} ", sevensDisplayCount + 1,
        sevens[sevensDisplayCount]);
}

Console.ReadLine();