首页 > 解决方案 > if 语句和 2 个数组的 C# 问题

问题描述

代码一直运行到第二个 for 循环中的 if 语句。我尝试过改变很多东西——添加了第二个数组,这样它就不会与 if 语句冲突。对其进行了调试并更改了最后一个 if 的真实语句,但它从未真正通过第 23 行,它显示System.IndexOutOfRangeException: Index was outside the bounds of the array。

            Console.WriteLine("Number of inputs: ");
            int numInput = int.Parse(Console.ReadLine());
            int[] arrayOfNumbers = new int[numInput];
            int[] arrayOfNumbersClone = new int[numInput];
            for (int inc = 0; inc < arrayOfNumbers.Length; inc++)
            {
                Console.Write("Enter {0} element: ", inc + 1);
                arrayOfNumbers[inc] = Int32.Parse(Console.ReadLine());
                arrayOfNumbersClone[inc] = arrayOfNumbers[inc];
            }
            for (int inc = 0, dec = numInput; inc2 < dec; inc2++, dec--)
            {
                if (arrayOfNumbers[inc] == arrayOfNumbersClone[dec])
                {
                    counter++;
                }
                else
                {
                }

            }
            if(counter<=0)Console.WriteLine("The array is not symmetric");
            else Console.WriteLine("The array is symmetric");

标签: c#arraysfor-loopif-statementindexoutofboundsexception

解决方案


该错误表示您试图获取数组中不存在的索引。所以只需添加检查条件:

int counter = 0;
int lengthNumbers = arrayOfNumbers.Length;
int lengthNumbersClone = arrayOfNumbersClone.Length;            
for (int inc2 = 0, dec = numInput; maxInc < dec; inc2++, dec--)
{
    if (inc2 < lengthNumbers
        && dec < lengthNumbersClone
        && arrayOfNumbers[inc2] == arrayOfNumbersClone[dec])
        {
           counter++;
        }
        else
        {                }

}

推荐阅读