C# 在不超出数组边界的情况下获取IndexOutOfRangeException
因此,我有下面的代码使用C# 在不超出数组边界的情况下获取IndexOutOfRangeException,c#,encryption,indexoutofboundsexception,C#,Encryption,Indexoutofboundsexception,因此,我有下面的代码使用orgTxt和rndTxt创建一个加密字符串,当我在Visual Studio中调试代码时,我在第二个for循环中得到一个IndexOutOfRangeException错误 我用断点检查索引的值,它似乎完全在范围内,有人知道问题是什么吗? 如果需要更多信息来帮助解决此错误,请给我留言 //variables string scrtTxt = null; string rndTxt = null; string orgTxt = reader.Re
orgTxt
和rndTxt
创建一个加密字符串,当我在Visual Studio中调试代码时,我在第二个for
循环中得到一个IndexOutOfRangeException错误
我用断点检查索引的值,它似乎完全在范围内,有人知道问题是什么吗?
如果需要更多信息来帮助解决此错误,请给我留言
//variables
string scrtTxt = null;
string rndTxt = null;
string orgTxt = reader.ReadToEnd();
//assigning random a string from key (set of all capital letters) to rndTxt
for (int i = 0; i < fileInfo.Length; i++)
{
rndTxt += key[random.Next(0, key.Length)];
}
//generating the encrypted message scrtTxt
int j = 0;
for (int i = 0; i < fileInfo.Length; i++)
{
if ((orgTxt[i] + rndTxt[j] - 'A') <= 'Z' && (orgTxt[i] + rndTxt[j] - 'A') >= 'A')
scrtTxt += Convert.ToChar((orgTxt[i] + rndTxt[j] - 'A'));
if ((orgTxt[i] + rndTxt[j] - 'A') > 'Z')
scrtTxt += (char)(scrtTxt[i] - 'Z' + 'A' - 1);//IndexOutOfRangeException error here
j = j + 1 == rndTxt.Length ? 0 : j + 1;
}
//变量
字符串scrtTxt=null;
字符串rndTxt=null;
字符串orgTxt=reader.ReadToEnd();
//将键(所有大写字母的集合)中的字符串随机分配给rndTxt
for(int i=0;i'Z'))
scrtTxt+=(char)(scrtTxt[i]-'Z'+'A'-1);//此处出现索引自动失效异常错误
j=j+1==rndTxt.Length?0:j+1;
}
您正在读取这行代码中的scrtTxt
数组
scrtTxt += (char)(scrtTxt[i] - 'Z' + 'A' - 1);
这就是你想要做的,还是应该是orgTxt或rndTxt?哦,我错了,是的,这就是问题所在,我必须从orgTxt中阅读。感谢nick-s
scrtTxt
在该点的长度必须小于i+1
个字符。再检查一遍。