C# 根据另一个数组中的索引递增数组中的 Int
C# increment an Int in an array based on index in another array
本题是一道C#编程的作业题。该程序的目标是拥有一个由 0 - 9 之间的 20 个整数组成的数组,然后拥有另一个 20 项数组,该数组在第一个数组中第一个数字 7 出现的索引处递增(以一个为单位)。在下面的代码中,我有一个名为 'values' 的数组,它生成随机数。第二个名为 'sevens' 的数组有 20 个零,如果在相应索引处找到值数组中的前 7 个零,则这些零可以递增 1。我的问题是我无法让第二个数组递增。 values 数组正确生成数字,但 sevens 数组仍然全为零。关于如何使 'sevens' 的索引递增的任何建议是在 'values' 中找到前 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();
}
}
这里的问题是,在执行使用它的第二个 while
循环之前,您没有将变量 valuesDisplayCount
重置回 0
。因为这个变量只是在前面的循环中使用过,它的值已经是 values.Length
,所以你的第二个 while
循环永远不会运行。
要解决此问题,只需在使用该变量的第二个 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();
本题是一道C#编程的作业题。该程序的目标是拥有一个由 0 - 9 之间的 20 个整数组成的数组,然后拥有另一个 20 项数组,该数组在第一个数组中第一个数字 7 出现的索引处递增(以一个为单位)。在下面的代码中,我有一个名为 'values' 的数组,它生成随机数。第二个名为 'sevens' 的数组有 20 个零,如果在相应索引处找到值数组中的前 7 个零,则这些零可以递增 1。我的问题是我无法让第二个数组递增。 values 数组正确生成数字,但 sevens 数组仍然全为零。关于如何使 'sevens' 的索引递增的任何建议是在 'values' 中找到前 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();
}
}
这里的问题是,在执行使用它的第二个 while
循环之前,您没有将变量 valuesDisplayCount
重置回 0
。因为这个变量只是在前面的循环中使用过,它的值已经是 values.Length
,所以你的第二个 while
循环永远不会运行。
要解决此问题,只需在使用该变量的第二个 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();