Proctives Posted July 28, 2015 Share Posted July 28, 2015 Merhaba arkadaşlar. C#'ta konsol uygulamasında bir program üzerinde oynamalar yapacağım ama ufak bir problemle karşılaştım. Şöyle ki: Kullanıcı ilk başta +-*/ ifadelerinden birini girmesi gerekiyor. Bunlar haricinde bir tuşa bastığında hata mesajı veriyor. Bu kısmı hatası olarak dört işlemden biriyle geçtikten sonra iki tane sayı girmesi isteniyor. İşte bu kısımda kullanıcı sayı yerine başka bir ifade girince yine bu uyarı mesajını versin istiyorum. Yani kullanıcıya iki sayı giriniz dediğinde kullanıcı sayıdan başka bir şey giremeyecek,girdiğinde hata mesajı ile karşılacak. Lütfen bilen bir arkadaşım varsa yardımcı olsun,rica ediyorum...YAZDIĞIM KOD: [spoiler]using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication3 { class Program { static void Main(string[] args) { bool secimDogrumu = false; char islem = 'a'; int s1, s2, sonuc = 0; Console.Write("-----------------------------------------\n" ) ; do { Console.Write("Aritmatik İşlemi [+-*/] Giriniz: "); ConsoleKeyInfo key = Console.ReadKey(); Console.WriteLine(""); if (key.KeyChar == '+' || key.KeyChar == '-' || key.KeyChar == '*' || key.KeyChar == '/') { secimDogrumu = true; islem = key.KeyChar; } else { Console.WriteLine("Hatalı İşlem!...Tekrar deneyiniz..."); } } while (!secimDogrumu); Console.Write("İlk sayıyı giriniz: ") ; s1 = Convert.ToInt32(Console.ReadLine()); Console.Write("İkinci sayıyı giriniz: "); s2 = Convert.ToInt32(Console.ReadLine()); Console.Write("------------------------------------------\n"); switch (islem) { case '+': sonuc = s1 + s2; Console.WriteLine("{0} ve {1} sayılarının sonucu: {2}\n\n", s1, s2, sonuc); break; case '-': sonuc = s1 - s2; Console.WriteLine("{0} ve {1} sayılarının sonucu: {2}\n\n", s1, s2, sonuc); break; case '*': sonuc = s1 * s2; Console.WriteLine("{0} ve {1} sayılarının sonucu: {2}\n\n", s1, s2, sonuc); break; case '/': sonuc = s1 / s2; Console.WriteLine("{0} ve {1} sayılarının sonucu: {2}\n\n", s1, s2, sonuc); break; default: Console.WriteLine("Hatalı İşlem!..."); break; } } } } [/spoiler] Burada kırmızı ile işaretlediğim alanı sevdiğim bir abim düzenledi. Ama aynı hata mesajını aşağıdaki çıktıdayken de vermesini istiyorum... [spoiler][/spoiler] İlk sayıyı giriniz kısmında sayı yerine "k" harfine basınca "Hatalı işlem!" uyarısı vermesini istiyorum. Fakat bu şekilde bir hatayla karşılaşıyorum. Buraya nereyi değiştirmem lazım acaba? [spoiler] Lütfen bilen birisi varsa yardımcı olsun. Şimdiden teşekkür eder saygılarımı sunarım... [/spoiler] Quote Link to comment Share on other sites More sharing options...
artal73 Posted July 28, 2015 Share Posted July 28, 2015 (edited) s1 = Convert.ToInt32(Console.ReadLine()); yerine bool rakamMi = int.TryParse(Console.ReadLine(), out s1); kullanın. "rakamMi" değişkeni true dönderirse rakamdır. Edited July 28, 2015 by artal73 Quote Link to comment Share on other sites More sharing options...
Proctives Posted July 28, 2015 Author Share Posted July 28, 2015 Yardımın için çok teşekkür ederim ama eğer mümkünatı varsa tam olarak ne yazmam gerektiğini söyleyebilir misiniz? Dediğiniz gibi S1 satırı yerine bool rakamMi = int.TryParse(Console.ReadLine(), out s1); yazdım. Hatayı vermiyor fakat mesela ü ile 2 yi topluyup 0+2=2 dir diyor. Biraz fazla acemiyim,hoşgörün lütfen... Saygılarımla... Quote Link to comment Share on other sites More sharing options...
artal73 Posted July 28, 2015 Share Posted July 28, 2015 static void Main(string[] args) altında degişkenleri tanımladığınız yerde. bool rakamMi = false; tanımlamasını yapın. do while döngüsünden sonra gelen şu 4 satırı silip. Console.Write("İlk sayıyı giriniz: "; s1 = Convert.ToInt32(Console.ReadLine()); Console.Write("İkinci sayıyı giriniz: "); s2 = Convert.ToInt32(Console.ReadLine()); aşağıda yazdığım kodları yerleştirin. do { Console.Write("İlk sayıyı giriniz: "); rakamMi = int.TryParse(Console.ReadLine(), out s1); if (rakamMi) { rakamMi = false; Console.Write("İkinci sayıyı giriniz: "); rakamMi = int.TryParse(Console.ReadLine(), out s2); if (!rakamMi) Console.WriteLine("Lütfen sadece rakam giriniz !!! "); } else Console.WriteLine("Lütfen sadece rakam giriniz !!! "); } while (!rakamMi); Quote Link to comment Share on other sites More sharing options...
Proctives Posted July 28, 2015 Author Share Posted July 28, 2015 Allah razı olsun,çok teşekkür ederim. Emeklerinize sağlık... :hi: Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.