Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#根据另一个数组中的索引递增数组中的整数_C#_Arrays_Increment - Fatal编程技术网

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

C#根据另一个数组中的索引递增数组中的整数,c#,arrays,increment,C#,Arrays,Increment,这个问题是关于C#编程的家庭作业问题。该程序的目标是创建一个0-9之间的20个整数的数组,然后创建另一个20项数组,该数组在第一个数组中第一个数字7出现的索引处递增(1)。在下面的代码中,我有一个名为“values”的数组,它生成随机数。第二个名为“sevens”的数组有20个零,如果在相应的索引处找到值数组中的前7个,则可以将其递增1。我的问题是无法使第二个数组递增。values数组正确地生成数字,但sevens数组保持为全零。如果在“值”中找到了前7个,关于如何使“7”指数增加的建议 cla

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

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();
    }
}
类程序
{
静态void Main(字符串[]参数)
{
int[]值=新的int[20];
int[]sevens=新的int[]{0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0, 0, 0, 0, 0, 0 };
随机=新随机();
int值;
整数计数=0;
//使用0-9之间的随机整数填充值
while(计数<值.长度)
{
randValue=随机。下一个(10);
值[计数]=随机值;
计数++;
}
//显示值的内容
int valuesDisplayCount=0;
while(值显示计数
这里的问题是,在执行使用变量的第二个
循环之前,您没有将变量
值displaycount
重置回
0
。因为这个变量刚刚在上一个循环中使用过,所以它的值已经是
values.Length
,所以第二个
while
循环永远不会运行

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


可能更好的处理方法是使用
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();
int[]值=新的int[20];
整数[]七=新整数[20];
随机=新随机();
//使用0-9之间的随机整数填充值
for(int count=0;count
没有什么不利于您的,但有时我希望这些编程课程/课程从学习如何使用调试器开始。在不知道编写工作代码所需的工具的情况下开始教授编程,就像驾驶学校在教授如何在道路交通中安全行为之前,首先从实际驾驶开始。。。对不起,你的咆哮,没有任何责任;我现在来看你的问题;-)这是学习如何使用的一个非常好的问题。将显示与逻辑分离始终是一个好主意。因此,在查找七时不要使用
valuesDisplayCount
将具有相同的效果。所有数组索引都会自动初始化为数据类型的默认值。在本例中,它将是全零。如@HereticMonkey所说,研究您的程序如何使用
valuesDisplayCount
变量。您可以使用调试器,但它应该足够简单,您也可以手动跟踪(用眼睛,也许是纸上的一些注释)程序的每一行/每一步都有什么值
valuesDisplayCount
。谢谢。这样做效果更好。我认为您使用for循环是正确的。其他人提到,计数器的值可能不是我期望的值,因此for循环使这变得更容易。很高兴它有所帮助。是的,在for循环中声明变量很好,因为它是循环的局部变量-循环之外的任何东西都不能使用或更改它。