C# 多维数组中的IndexOutOfRangeException
我已经附上了下面的代码,我得到了在A部分没有处理的IndexOutOfRangeException,然后我尝试了下面的Try catch,但现在我得到了 “app.exe中发生了类型为“System.IndexOutOfRangeException”的首次意外异常 在C:\Users\Rahul Taneja\Documents\Visual Studio 2010\Projects\app\app\Form6.cs中的app.Form6.ZMove(字符串s1,字符串s2)中:第136行“ 堆栈内跟踪 有谁能告诉我为什么会这样,解决办法是什么C# 多维数组中的IndexOutOfRangeException,c#,multidimensional-array,C#,Multidimensional Array,我已经附上了下面的代码,我得到了在A部分没有处理的IndexOutOfRangeException,然后我尝试了下面的Try catch,但现在我得到了 “app.exe中发生了类型为“System.IndexOutOfRangeException”的首次意外异常 在C:\Users\Rahul Taneja\Documents\Visual Studio 2010\Projects\app\app\Form6.cs中的app.Form6.ZMove(字符串s1,字符串s2)中:第136行“ 堆
public void ZMove(string s1, string s2)
{
//Move 2-1-4-3
int j = Int32.Parse(s1);
int k = Int32.Parse(s2);
for (int l = 0; l < k; l++)
{
try
{
swap(array[2][j], array[1][j]); ///Part A
swap(array[1][j], array[4][j]);
swap(array[4][j], array[3][j]);
swap(array[3][j], array[2][j]);
}
catch (IndexOutOfRangeException e)
{
MessageBox.Show(e.StackTrace);
//throw;
}
}
}
private void swap(char[] p1, char[] p2)
{
//throw new NotImplementedException();
int l = p1.Length;
for (int i = 0; i < l; i++)
{
char temp = p1[i];
p1[i] = p2[i];
p2[i] = temp;
}
}
public void ZMove(字符串s1、字符串s2)
{
//移动2-1-4-3
intj=Int32.Parse(s1);
intk=Int32.Parse(s2);
对于(int l=0;l
字符串s1、s2是否可能是绝对位置,您实际上应该执行以下操作:
int j = Int32.Parse(s1) -1;
int k = Int32.Parse(s2) -1;
您有12种不同的阵列访问,这可能是问题所在,您不让我们看到阵列是如何创建的。没有一个通情达理的人能帮你解决你的具体问题 因此,我将尝试回答这个问题 如何调试
索引自动失效异常
?
- 在VisualStudio中打开“异常”窗口
- 展开“公共语言运行时异常”窗口
- 展开系统节点
- 选中System.IndexOutOfRangeException的抛出复选框
- 菜单项调试->异常
- 键盘快捷键Ctrl+Alt+E
- 键盘快捷键Ctrl+D,E
- 通过调试命令窗口。异常
数组
值的形状是什么?以及j
的值?数组的第一个维度没有索引2或1,或者第二个维度没有索引j
。请注意,您使用的是锯齿状数组,它们与多维数组类似,但不完全相同。数组是6*N*N,其中N由用户给定,它存储在某个位置,我通过函数获得了该值(以字符串格式),然后我铸造这个字符串并将值保存在变量j中。对于异常,我显示了StackTrace