PDA

View Full Version : سوال: حل مشکل تبدیل در داخل حلقه ها در c#



mr saeed
شنبه 04 مهر 1394, 13:14 عصر
سلام من مدتی هست که تو یادگیری C#‎‎‎‎‎‎‎‎‎‎‎‎ تحت کنسول هستم و اطلاعاتم کامل نیست و مشکل اصلی من تو casting هست و اونطور که من فهمیدم این روش تو حلقه درست نیست ...

اگه امکانش هست در این مورد کمی بیشتر توضیح بدید ممنون.

اینم کد نمونه ساده که تو visual studio 2015 اررو میده:


string[] daysOfWeek = new string[7];
daysOfWeek[0] = "Sunday";
daysOfWeek[1] = "Monday";
daysOfWeek[2] = "Tuesday";
daysOfWeek[3] = "Wednesday";
daysOfWeek[4] = "thursday";
daysOfWeek[5] = "Friday";
daysOfWeek[6] = "Saturday";


while (true)
{
Console.Clear();
Console.Write("Pick out a number bitween 1 and 7 or press q to quit: ");
string input = Console.ReadLine();


if (input == "q" || input == "Q")
break;


int index = Convert.ToInt32(input);


if(index>=1 && index<=7)
{
Console.WriteLine(daysOfWeek[index - 1]);
}
else
{
Console.WriteLine("Invalid input!");
}
}

shaho.khedri
شنبه 04 مهر 1394, 17:53 عصر
سلام
کاش مینوشتید چه اروری میده. ولی در کل من توی کدتون خطایی نمیبینم جز اونجاش که input رو با q یا Q مقایسه کردین.
دقت کنید که #C یه زبان شیءگراس. و رشته ها (string) کلاس هستن و مقایسه شون به شکلی که شما نوشتین خود Objectشون با هم مقایسه میشه که یکی نیستن. اگه بخواین مقدارشون رو مقایسه کنید باید از متد Equals استفاده کنید. برای مثال خطوط 18 و 19 کدتون به این شکل میتونه باشه:
if(input.Equals("q") || input.Equals("Q"))
break;
این البته در صورتی هست که کاربر یا q وارد کنه یا عدد. در غیر این صورت برنامه‌ی شما بازم ارور خواهد داشت چون توی خط 22 دارید یه مقدار غیر عددی رو به عدد تبدیل میکنید. اگه میخواید جلوی این ارور رو هم بگیرید باید با مفهوم Exception آشنا بشید.

mr saeed
شنبه 04 مهر 1394, 18:09 عصر
ممنون از جوابتون
ارور هم که گفتم اینه :
135504

mr saeed
شنبه 04 مهر 1394, 18:12 عصر
اونم زمانی میاد فرضا اعدادی براش 1 تا 7 تعریف کردم یکیشو میزنم ولی با چند اینتر این میاد ....
شما مرجع خوبی برای یاد گیری c# می دونید ؟؟

shaho.khedri
شنبه 04 مهر 1394, 23:22 عصر
خب با چندتا اینتر، دفعه ی اول به صورت درست داده میگیره اما دفعات بعدی شما دارید یه داده ی خالی رو میفرستید و همونطور که توی ارور هم گفته داده تون توی یه فرمت درست نیست

منبع هم نمیدونم چی معرفی کنم چون خودمم جسته و گریخته فقط به مراجع نگا کردم (البته بنده هم هنوز اول راهم)
ولی در کل بهترین راه برنامه نویسی تمرین کردن زیاده

محمد آشتیانی
یک شنبه 05 مهر 1394, 01:03 صبح
سلام
به این شکل اصلاح کنید

string[] daysOfWeek = new string[7];
daysOfWeek[0] = "Sunday";
daysOfWeek[1] = "Monday";
daysOfWeek[2] = "Tuesday";
daysOfWeek[3] = "Wednesday";
daysOfWeek[4] = "thursday";
daysOfWeek[5] = "Friday";
daysOfWeek[6] = "Saturday";




while (true)
{
Console.Clear();
Console.Write("Pick out a number bitween 1 and 7 or press q to quit: ");
string input = Console.ReadLine();


if (input != null && input.ToLower() == "q")
break;

int index;
if (!int.TryParse(input, out index)) continue;

if (index >= 1 && index <= 7)
{
Console.WriteLine(daysOfWeek[index - 1]);
}
else
{
Console.WriteLine("Invalid input!");
}
}


ضمنا اون Console.Clear که گذاشتید اجازه نمیده نتیجه رو ببینید.


موفق باشید.

upper of min
یک شنبه 05 مهر 1394, 11:15 صبح
اونم زمانی میاد فرضا اعدادی براش 1 تا 7 تعریف کردم یکیشو میزنم ولی با چند اینتر این میاد ....
شما مرجع خوبی برای یاد گیری C#‎‎‎‎‎ می دونید ؟؟

سلام دوست عزیز
یه منبع هست که می تونه به شما کمک کنه
لینک زیر رو ببینید
http://s5.picofile.com/d/36095a9c-3a11-4143-b47e-f3f8658c9f20/Part1_C_.rar

موفق باشید:لبخندساده: