C#根据另一个数组中的索引递增数组中的整数
这个问题是关于C#编程的家庭作业问题。该程序的目标是创建一个0-9之间的20个整数的数组,然后创建另一个20项数组,该数组在第一个数组中第一个数字7出现的索引处递增(1)。在下面的代码中,我有一个名为“values”的数组,它生成随机数。第二个名为“sevens”的数组有20个零,如果在相应的索引处找到值数组中的前7个,则可以将其递增1。我的问题是无法使第二个数组递增。values数组正确地生成数字,但sevens数组保持为全零。如果在“值”中找到了前7个,关于如何使“7”指数增加的建议C#根据另一个数组中的索引递增数组中的整数,c#,arrays,increment,C#,Arrays,Increment,这个问题是关于C#编程的家庭作业问题。该程序的目标是创建一个0-9之间的20个整数的数组,然后创建另一个20项数组,该数组在第一个数组中第一个数字7出现的索引处递增(1)。在下面的代码中,我有一个名为“values”的数组,它生成随机数。第二个名为“sevens”的数组有20个零,如果在相应的索引处找到值数组中的前7个,则可以将其递增1。我的问题是无法使第二个数组递增。values数组正确地生成数字,但sevens数组保持为全零。如果在“值”中找到了前7个,关于如何使“7”指数增加的建议 cla
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循环中声明变量很好,因为它是循环的局部变量-循环之外的任何东西都不能使用或更改它。