مشکل در اجرای کدهای شرطی #C
سلام دوستان،امروز شروع کردم به یادگیری برنامه نویسی #C و وقتی به مباحث شرطی رسیدم،یکسری کد داخل محیط Visual Studio نوشتم ولی وقتی اونها رو اجرا میکنم به مشکل بر میخورم. کدها:
namespace First { class program { static void Main(string[] args) { System.Console.WriteLine("What's your name?"); string name = System.Console.ReadLine(); if (name == "Mehran") { System.Console.WriteLine("Welcome admin!"); } else { System.Console.WriteLine("Welcom {0}.", name); } System.Console.WriteLine("Please enter your age: "); int age = (int)System.Console.Read(); if (age <= 0) { System.Console.WriteLine("You not born yet!"); } else if (age > 0 && age < 10) { System.Console.WriteLine("You are just child!"); } else if (age >= 10 && age <=18) { System.Console.WriteLine("You are teenager!"); } else if (age > 18 && age < 100) { System.Console.WriteLine("You are adult!"); } else if (age >= 100) { System.Console.WriteLine("You must be dead!"); } else { System.Console.WriteLine("Kidding me?! Run again!"); } System.Console.ReadKey(); } } }
حالا مشکل من اینجاست که فرمان تا بعد از وارد کردن نام به درستی اجرا میشه،ولی در قسمت ورودی سن،هر عددی(منفی و مثبت) که وارد میکنم عبارت You are adult رو نمایش میده و در صورتی هم که عدد وارد نکنم عبارت You must be dead نمایش داده میشه.
میخواستم بدونم مشکل از کجایی کدهای منه.
5 پاسخ
خیلی ممنون،مشکل رفع شد،فقط این قسمت کد به درستی اجرا نمیشه،آیا باید جداگونه بنویسم؟
else { System.Console.WriteLine("Kidding me?! Run again!"); } System.Console.ReadKey();
همچنین اگر لینکی برای آموزش مبتدی به افرادی مثل من میشناسید،لطفا بگید،ممنون.
دوست عزیز شما همه حالاتی که ممکن است برای یک عدد به وجود بیاید رو در شرط های بالاتر در نظر گرفتی و برای همین این قسمت از کدت اجرا نمیشه و این منطقیه
برای اعداد زیر 0 یه دستور داری
برای اعداد بین 0 تا 5 هم یه دستور داری
برای اعداد بین 5 تا 10 هم یه دستور دیگه
برای اعداد بین 10 تا 18 هم یه دستور
برای اعداد بین 18 تا 100 هم یه دستور
برای اعداد بزرگتر از 100 هم یه دستور دیگه داری پس برنامه هیچوقت به else تو نمیرسه
خیر با این کدی که نوشته شده اینجوری نیست
برای این که شما داری متغیر age رو معیار شرط گذاری قرار میدی. و این متغیر یک متغیر عددی هستش و از اونجایی که C# یک زبان strongly type هستش نمی تونی یه مقدار حرفی رو به یه متغیر عددی نسبت بدی. برای این که مقدار else کار بکنه باید وقتی که عددی رو از ورودی دریافت کردی چک کنی ببینی مقدارت عددی هستش یا حرفی(رشته ای). و اگر مقدار رشته ای بود باید عبارت else رو بنویسی و در غیر این صورت به شکل عدد باهاش برخورد کنی. پس این شرط گذاری راه درستی برای رسیدن به else نیست
اگر حروف وارد کنم،منطقتا باید به else برسیم.
سلام دوست عزیز دستور
Console.Read()
برای خواندن یک کاراکتر به کار میره و کداسکی اون کاراکتر رو به شما میداد و چون کد اسکی همه کاراکتر ها بیش از 48 است پس همیشه جواب adult به شما میداد قسمت خواندن سن را این گونه تغییر بدهید نتیجه میگیرید
var text = Console.ReadLine(); if(string.IsNullOrEmpty(text)) return; int age =int.Parse(text );