PDA

View Full Version : سوال: مشکل در اجرای برنامه تولید مقدار تصادفی



afsane/68
سه شنبه 16 تیر 1394, 15:15 عصر
int[,] currenttask = new int[popsize, chromLen];
int[,] currentmode = new int[popsize, chromLen];
Random rand = new Random();




string s1;
string s2;


for (int i = 0; i < popsize; i++)
{
for (int j = 0; j < chromLen; j++)
{
currenttask[i, j] = 0;
currentmode[i, j] = 0;
}
}


for (int i = 0; i < popsize; i++)
{
s2 = " ";
for (int j = 0; j < chromLen; j++)
{
bool flag1 = false;
int rr = rand.Next(0, chromLen);
for (int r1 = 0; r1 < j; r1++)
{
if (currenttask[i, r1] == rr)
{
flag1 = true;
j = j - 1;
break;
}
}
if (flag1 == false)
{
currenttask[i, j] = rr;
s2 += "" + currenttask[i, j];
}
}
}
Console.WriteLine("task:{0}", s2);


for (int i = 0; i < popsize; i++)
{
s1 = " ";
for (int j = 0; j < chromLen; j++)
{
int y = currenttask[i, j];
currentmode[i, j] = rand.Next(1, mode[y] + 1);
s1 += "" + currentmode[i, j];
}
}
Console.WriteLine("mode:{0}", s1);


من برنامه فوق رو کد کردم برای تولید ارایه های تصادفی اما زمانی که آن را اجرا میکنم با این خطا روبرو میشم:'Use of unassigned local variable's2 و'Use unassined local variable 's1

دلیل این خطا چیه؟

rahnema1
سه شنبه 16 تیر 1394, 23:35 عصر
سلام
ممکنه شرط حلقه هیچ وقت برقرار نشه پس بهتره هنگام تعریف متغیر مقداردهی اولیه کنید تا بعدا خطا ایجاد نشه

string s1 = String.Empty;
string s2 = String.Empty;

چون مرتب رشته داره تغییر می کنه اگه به جای string از کلاس StringBuilder استفاده کنید سرعت کار بیشتر می شه