c#空字符串[]错误
本文关键字:错误 字符串 | 更新日期: 2023-09-27 18:00:25
请有人帮我处理这段显示array outofbond exception
的代码。
文件new_hosts.txt中的数据类似于:
test test 28/6/2015 09:45 PM
test fafagf 30/6/2015 01:00 PM
test sfaasfag 28/6/2015 10:05 PM
代码:
public void notification()
{
string regvalue;
int ctr = 0;
bool isNotificationExits=false;
string[] meetingdata=new string[]{};
string[] notificationsdata = new string[]{};
try
{
//ctr = File.ReadAllLines("new_hosts.txt").Length;
meetingdata = File.ReadAllLines("new_hosts.txt");
}
catch (FileNotFoundException)
{
//showmainmenu();
}
List<String> notificationsdata = new List<String>();
foreach(string data in meetingdata)
{
string trimed = data;
//Console.WriteLine(data);
Regex d = new Regex(@"('d+['/]'d+['/]'d+)");
Regex t = new Regex(@"('d+)([':])('d+)'s(PM|AM)");
Match mt =t.Match(trimed);
Match md = d.Match(trimed);
regvalue = md.Value +" " +mt.Value;
DateTime datetime = new DateTime();
if (md.Success && mt.Success)
{
datetime = DateTime.ParseExact(regvalue, "d/M/yyyy hh:mm tt", new CultureInfo("en-US"), DateTimeStyles.None);
//Console.Write(datetime);
}
else { Console.WriteLine("Opps someting Went Wrong Please Contact Developer...!!!"); }//this is not going to happend ever
if (!(datetime < DateTime.Now))
{
if (datetime <= DateTime.Now.AddDays(5))
{
//Console.WriteLine(ctr + " you here");
isNotificationExits = true;
notificationsdata[ctr]=data; <<-----Array Out Of bond Exception here
ctr++;
}
}
}
if(isNotificationExits==true)
{
Console.WriteLine("'n't'tHey..! You have Some Reminders here'n ");
Console.Write("Sr.no |");
Console.Write(" Subject |");
Console.Write(" Place |");
Console.Write(" Date |");
Console.WriteLine(" Time");
for(int j=0; j <= notificationsdata.Length ; j++)
{
Console.WriteLine(j + 1);
Console.WriteLine(notificationsdata[j]);
}
Console.WriteLine();
}
}
除了Nikola的问题之外,您还需要解决的是,您还没有为数组设置大小
string[] notificationsdata = new string[]{};
如果事先不知道大小,可以使用其他数据结构,如List<string>
。我看到您已经创建了一个List<string>
对象,但命名方式与数组相同。这很令人困惑,因此您应该重命名其中一个或删除其中一个。
要使用该列表,请替换
notificationsdata[ctr]=data;
带有
notificationsdata.Add(data);
您没有具体说明在哪里得到异常,但我会大胆猜测,告诉您这段代码就是您的错误:
for(int j=0; j <= notificationsdata.Length ; j++)
{
Console.WriteLine(j + 1);
Console.WriteLine(notificationsdata[j]);
}
问题是,从索引0开始迭代数组,直到索引notificationsdata.Length
。但是,Length
方法返回数组中的项数,因此不存在具有数组长度的索引。
你能做的就是简单地将小于或等于的符号改为小于:
for(int j=0; j < notificationsdata.Length; j++)
或者从循环最大值中减去一:
for(int j=0; j <= notificationsdata.Length - 1; j++)
如果使用List,则必须使用notificationsdata.Add(data)
将项目添加到列表中。