c# - 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");
解决方案
该错误表示您试图获取数组中不存在的索引。所以只需添加检查条件:
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
{ }
}
推荐阅读
- c - 无法使用 wasmer 执行独立的 webassembly 文件
- git - 是否可以重置已提交的部分文件?
- c - minGW64 在 C 程序中使用静态 libcurl.a
- java - 如何将 Java 编译为 WASM(WebAssembly)?
- javascript - 在没有 for 循环的情况下展平图形
- javascript - 通过jquery从两个单词之间的textarea中提取特定文本
- vue.js - 如何在 vuejs 中设置会话值输入
- amazon-web-services - 如何保护 EC2 机器不被通过密钥对访问
- google-sheets - 如何在谷歌表格的单个折线图中显示两个月的数据?
- c# - 我应该更改什么以使 Chrome 每次触发此代码时都不会打开新窗口