C# 如何处理System.IndexOutOfRangeException

C# 如何处理System.IndexOutOfRangeException,c#,.net,exception,machine-learning,indexoutofrangeexception,C#,.net,Exception,Machine Learning,Indexoutofrangeexception,我正在尝试调试代码并运行到这个系统中。有人能帮我解决这个问题吗。请查看发生异常的图像。它成功地读取了“line Array”的第一行,但在第二行出现异常。当i=1和j=0时发生异常。 这是: 使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用系统文本; 使用系统图; 使用系统、绘图、成像; namespace.SVMs { 静态类特性 { /// ///从包含以下内容的文本中提取图像: ///图像表示为二进制0和1。 /// ///

我正在尝试调试代码并运行到这个系统中。有人能帮我解决这个问题吗。请查看发生异常的图像。它成功地读取了“line Array”的第一行,但在第二行出现异常。当i=1和j=0时发生异常。
这是:

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用系统图;
使用系统、绘图、成像;
namespace.SVMs
{
静态类特性
{
/// 
///从包含以下内容的文本中提取图像:
///图像表示为二进制0和1。
/// 
/// 
公共静态位图提取(字符串文本)
{
位图位图=新位图(32,32,PixelFormat.Format32bppRgb);
string[]line=text.Split(新字符串[]{“\r\n”},StringSplitOptions.RemoveEmptyEntries);
对于(int i=0;i<32;i++)
{
对于(int j=0;j<32;j++)
{       
如果(第[i][j]行=='0')
设置像素(j,i,Color.White);
else bitmap.SetPixel(j,i,Color.Black);
}
}
返回位图;
}
/// 
///从中提取特征向量表示
///图像将二值图像“展平”为
///0和1的数组。
/// 
/// 
公共静态双[]提取(位图bmp)
{
double[]功能=新的double[32*32];
对于(int i=0;i<32;i++)
对于(int j=0;j<32;j++)
特征[i*32+j]=(bmp.GetPixel(j,i).R==255)?0:1;
返回特性;
}
/// 
///转换包含0和1的特征向量
///将图像中的每个像素表示回
///图像。
/// 
/// 
公共静态位图导出(双[]功能)
{
位图位图=新位图(32,32,PixelFormat.Format32bppRgb);
对于(int i=0;i<32;i++)
对于(int j=0;j<32;j++)
{
双v=特征[i*32+j];
v=255-Math.Max(0,Math.Min(255,Math.Abs(v)*255));
SetPixel(j,i,Color.FromArgb((int)v,(int)v,(int)v));
}
返回位图;
}
公共静态双[]预处理(位图)
{
double[]功能=新的double[64];
对于(int m=0;m<8;m++)
{
对于(int n=0;n<8;n++)
{
int c=m*8+n;
对于(int i=m*4;i
尝试更换

string[] lines = text.Split(new String[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);

此外,您必须确保
文本
至少包含32个非空行,每行包含32个字符。如果更改
Split
对您没有帮助,则是
text
变量有问题

从您的描述来看,似乎没有
行[1]

您的所有行都放在
行[0]中-您可以在第二张图像中看到它

尝试替换

string[] lines = text.Split(new String[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);

此外,您必须确保
文本
至少包含32个非空行,每行包含32个字符。如果更改
Split
对您没有帮助,则是
text
变量有问题

从您的描述来看,似乎没有
行[1]



您的所有行都放在
行[0]中-您可以在第二张图像中看到它,因为
.removeMptyEntries
,它似乎是[1]=string.EmptyNo。我认为
lines.Length==1
我同意@HenkHolterman。例如,如果在<代码>文本< /代码>字符串中,有一个---->代码> \\\\\r\n\/c>(请注意空白)如果有一个包含了整个图片的行(0),第1行就不存在了。请确保您清理/重建解决方案并仔细调试它。你会明白的。似乎行[1]=string.EmptyNo,因为
.removeMptyEntries
。我认为
lines.Length==1
我同意@HenkHolterman。例如,如果在<代码>文本< /代码>字符串中,有一个---->代码> \\\\\r\n\/c>(请注意空白)如果有一个包含了整个图片的行(0),第1行就不存在了。请确保您清理/重建解决方案并仔细调试它。你会明白的。这可能和分裂有关,但这只是一个表面的改变。它没有帮助。说的参数无效。@EhsanUlHaq,我能从您那里得到文本变量的值吗?在您的第二张图片中,第[0]行有许多行,可能存在问题?第[0]行应该是图像中的第一行,第[1]行-秒…我已经附加了文本的图像,你可以看看它可能与拆分有关,但这只是一个表面上的更改。它没有帮助。说的参数无效。@EhsanUlHaq,我能从您那里得到文本变量的值吗?在您的第二张图片中,第[0]行有许多行,可能存在问题?第[0]行应该是图像中的第一行,第[1]行-第二行…我已经附加了文本的图像,您可以看一下
string[] lines = text.Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries);