• 28-07-2015, 17:15:48
    #1
    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:
    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;

    }
    }
    }
    }



    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...



    İ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?



  • 28-07-2015, 18:45:01
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    s1'e gelmeden önce console.readline'dan gelen veriyi sayi1 isimli yeni bir stringe atayın.

    if(sayi1.All(char.IsDigit) == true) //gelen veri rakam mı harf mi kontrol ediyoruz.
    {
    s1 = Convert.ToInt32(sayi1);
    }
    else
    {
    Console.WriteLine("Hatalı İşlem!...İlk sayıyı tekrar giriniz...");
    }

    Şeklinde kontrol edebilirsiniz.

    Düzenleme;

    int s1, s2, sonuc; şeklinde tanımladığınız intleri
    int s1 = 0, s2 = 0, sonuc = 0; şeklinde tanımlamanız gerekir.
  • 28-07-2015, 20:47:01
    #3
    WebWon adlı üyeden alıntı: mesajı görüntüle
    s1'e gelmeden önce console.readline'dan gelen veriyi sayi1 isimli yeni bir stringe atayın.

    if(sayi1.All(char.IsDigit) == true) //gelen veri rakam mı harf mi kontrol ediyoruz.
    {
    s1 = Convert.ToInt32(sayi1);
    }
    else
    {
    Console.WriteLine("Hatalı İşlem!...İlk sayıyı tekrar giriniz...");
    }

    Şeklinde kontrol edebilirsiniz.

    Düzenleme;

    int s1, s2, sonuc; şeklinde tanımladığınız intleri
    int s1 = 0, s2 = 0, sonuc = 0; şeklinde tanımlamanız gerekir.
    İlginiz için çok teşekkür ediyorum ama bugünkü yoğun tempodan kafam karman çorman oldu. Rica etsem,imkanınız olursa kod halinde nereyi düzeltmem ve ne eklemem gerektiğini yazarsanız çok memnun olurum. Artık bir şey üretemiyorum ben,beyin durdu... Belki de anlayamadım.
  • 28-07-2015, 21:53:56
    #4
    Şu an mobildeyim. Müsait olursam elbette yazabilirim 😊 kolay gelsin.
  • 28-07-2015, 22:59:51
    #5
    Çözüme kavuşturdum. Emekleriniz için çok teşekkür ediyorum,sağolun...