PDA

View Full Version : سوال: خطای StackOverFlow در هنگام ارسال آرایه 100 عنصری از نوع کاراکتر



abed_se2007
شنبه 21 دی 1387, 02:29 صبح
سلام دوستان
وقتی دارم آرایه 100 عنصری از جنس کاراکتر رو به کلاس می فرستم در قسمت خصوصیت مربوط به آرایه در کلاس خطای stack over fllow می ده .
مشکل از کجاست ؟
کد main


staticvoid Main(string[] args)
{
add a;
char [] x1=newchar [100];
char [] x2=newchar [100];
System.Console.WriteLine("Enter array one => ");
for (int i = 0; i < x1.Length; i++)
x1[i]=System.Convert.ToChar( Console.Read());
for (int i = 0; i < x1.Length; i++)
x2[i] = System.Convert.ToChar(Console.Read());
a = newadd( x1, x2);
a.sum();
a.print_add();

کد کلاس add

classadd
{
privatechar [] r = newchar [101];
privateint l,c,n;
///<summary>
/// Properties array1
///</summary>
publicchar array1
{
set { a1 = value; }
get { return a1; }
}
///<summary>
/// Properties array2
///</summary>
publicchar array2
{
set { a2 = value; }
get { return a2; }
}
///<summary>
/// Properties L
///</summary>
publicint L
{
set { l = value; }
}
///<summary>
/// set_add
///</summary>
///<param name="a1"></param>
///<param name="a2"></param>
///<param name="l"></param>
privatevoid set_add (char []a1,char []a2,int l)
{
array1 = a1;
array2 = a2;
L = l;
}
///<summary>
/// «ںھë§ى
///</summary>
///<param name="a1"></param>
///<param name="a2"></param>
///<param name="l"></param>
public add(char[] a1, char[] a2, int l)
{
set_add(a1, a2, l);
}
///<summary>
/// «ںھë§ى
///</summary>
///<param name="a1"></param>
///<param name="a2"></param>
public add (char[] a1, char[] a2):this(a1,a2,100){}
publicvoid sum()
{
c = 0;
for (int i = 0; i < 100; i++)
{
n=array1[i] + array2[i] + c;
if (n < 10)
{
r[i] = System.Convert.ToChar(n);
c = 0;
}
else
{
r[i] = System.Convert.ToChar ( n / 10);
c = n % 10;
}
}
r[100] = System.Convert.ToChar(c);
}
publicvoid print_add()
{
for (int k = 0; k < r.Length; k++)
System.Console.Write(r[k]);
}
}

shask00l
یک شنبه 22 دی 1387, 01:13 صبح
دوست عزیز
آرایه شما ظاهرا خیلی بزرگه . اونو به بخشهای کوچکتر تقسیم کنید و دوباره تست کنید .

abed_se2007
دوشنبه 23 دی 1387, 00:47 صبح
با تشکر از شما دوست عزیز .
ولی مشکل دقیقاً هنگامی رخ می دهد که تابع set از خصوصیت مربوط به آرایه می خواهد مقدار (value) را به a1 (آرایه متناظر در کلاس) نسبت دهد

set { a1 = value; }

مگه در c# مقادیر آرایه مانند مقادیر سایر متغییرها در قسمت خصوصیت Set نمی شوند .

Amir Oveisi
دوشنبه 23 دی 1387, 01:08 صبح
شما دارین به یک نوع char یک آرایه مقدار میدین و همین باعث بروز این مشکله

Amir Oveisi
دوشنبه 23 دی 1387, 01:10 صبح
public char array1
{
set { a1 = value; }
get { return a1; }
}


privatevoid set_add (char []a1,char []a2,int l)
{
array1 = a1;
array2 = a2;
L = l;
}

abed_se2007
چهارشنبه 25 دی 1387, 23:25 عصر
از راهنمایی شما بسیار متشکرم جناب bermooda
واسه حل مشکل چیکار کنم