İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

c#

wizz

0
İyinet Üyesi
Katılım
26 Ekim 2007
Mesajlar
136
Reaction score
0
meraba arkadaşlar c# da örneğin dışarıdan girilen iki sayınıntoplama işlemini yaptığımızı düşünelim fakat girenkişi sayı değil gıcıklık olsun diye harf ,? gibi değerler girdiğinde hatayı nasıl düzeltirim yardımlarınız için şimdiden teşekkürler...
 

forumselcuk

0
İyinet Üyesi
Katılım
26 Şubat 2006
Mesajlar
713
Reaction score
1
Konum
Selçuk Üniversi
try catch kullanırsın yada girilenin sayı olup olmadığını kontrol edersin
try catch i anlatayım

try
{
Console.writeLine(s1/s2);
}
catch(Exception e)
{
Console.WriteLine("Hata oluştu. Hata açılaması "+e.Message);
}
 

aLkaN

0
İyinet Üyesi
Katılım
18 Ağustos 2006
Mesajlar
130
Reaction score
0
Validation ları kullanarak harf girmesini engelleyebilirsin kendin bi araştır eger çözemezsen örnek veririm.
 

gifted

0
İyinet Üyesi
Katılım
5 Ocak 2005
Mesajlar
2,122
Reaction score
1
Konum
NeverLand
Kod:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int birinciSayi, ikinciSayi;
            geri:
            Console.Write("1.sayıyı giriniz=");
            try
            {
                birinciSayi = int.Parse(Console.ReadLine());
                Console.Write("2.sayıyı giriniz=");
                ikinciSayi = int.Parse(Console.ReadLine());
            }
            catch
            {
                goto geri;
            }
            int toplam = birinciSayi + ikinciSayi;
            Console.WriteLine("Sonuc={0}", toplam.ToString());
        }
    }
}

Programı bu şekilde denedim,sorunsuz çalışıyor.Kullanıcı yanlış girince tekrar girmesini istiyor.Hemen belirteyim goto komutu pek kullanılması önerilen bir komut değildir.Fakat console ekranında başka türlü yapmanız pek kolay olmayacaktır.Kolay gelsin ;)
 

wizz

0
İyinet Üyesi
Katılım
26 Ekim 2007
Mesajlar
136
Reaction score
0
teşekkürler arkadaşlar daha yeni başladım c# a try ve catch hakkında biraz bilgi verebilirmisiniz
 

wizz

0
İyinet Üyesi
Katılım
26 Ekim 2007
Mesajlar
136
Reaction score
0
bu sorunu halletmede sayı dışında veri girdiğinde hata vermesi ni yapamazmıyız try ve catch kullanmadan
 

gifted

0
İyinet Üyesi
Katılım
5 Ocak 2005
Mesajlar
2,122
Reaction score
1
Konum
NeverLand
try blogu;Kullanıcı kaynaklı veya harici bir şekilde hata oluşabilme riski olan bölgelere eklenir.Örneğin kullanıcıdan siz yaşını isterken o adını yazabilir.Böyle durumlarda o kısımda try blogu var ise durum catch bloğuna gönderilir.

catch blogu;try blogunda istenmeyen bir durum oluştuğunda programın geleceği kısımdır.Hata oluştuktan sonra diğer kodlara bakılmadan catch bloguna düşülür ve buradaki işlem uygulanır.

catch blogunda duruma özel hataları default sistem hatası olarak gönderebileceğiniz gibi kendi oluşturduğunuz hatalarıda gönderebilirsiniz.

Yukarıda programda direk catch kullandığımızda bu hata tipi ne olursa olsun anlamındadır.Siz burayı catch (FormatException) şeklinde yazarsanız kullanıcı format girişinde hata yaptığında bu bloga gelir.

Her hataya özel catch tanımlamak en mantıklısıdır.Kendi mesajınızı vermek için

catch (OverflowException)
{
Console.WriteLine ("Değişkenin taşıyabileceğinden büyük değer girdiniz");
}

gibi bir hata gösterebileceğiniz gibi ayrıca;

catch (OverflowException hata)
{
Console.WriteLine (hata.Message)
}

yaparak sistem tarafından üretilen hata mesajınıda görüntüleyebilirsiniz.Try ve Catch blokları anlamlarından da ne olduklarını çıkarabilirsiniz.Try-Dene Catch-Yaka

Program önce dener eğer hata varsa yakalar ;)
 

gifted

0
İyinet Üyesi
Katılım
5 Ocak 2005
Mesajlar
2,122
Reaction score
1
Konum
NeverLand
bu sorunu halletmede sayı dışında veri girdiğinde hata vermesi ni yapamazmıyız try ve catch kullanmadan

Kullanıcı int tanımlanmış bir bölüme string girip onayladığı zaman siz try ile yakalamasanızda sistem kendi hata olarak yakalar ve hata verip programı durdurur.

Console ekranlarında kullanıcı giriş yaparken veriyi düzeltme şansı yok.Zaten onayladıktan sonra farklı girmiş ise ya siz hata verdirir,düzeltirsiniz.Yada sistem otomatik olarak kendi hatasını üretir.
 

Loi

0
İyinet Üyesi
Katılım
13 Kasım 2006
Mesajlar
6,192
Reaction score
44
Konum
localhost
Bende çok merak ediyorum c# i, Gifted.ib nerden başlamak lazım :)
 

gifted

0
İyinet Üyesi
Katılım
5 Ocak 2005
Mesajlar
2,122
Reaction score
1
Konum
NeverLand
Bende çok merak ediyorum c# i, Gifted.ib nerden başlamak lazım :)

.Net teknolojisi farklı bir sistem olduğu için diğerleri gibi önce pascal öğrenmelisin yada c öğrenmelisin gibi söylemlerde bulunmayacağım.Çünkü bu tarz öneriler yararlı olmasından çok zararlı oluyor.Doğru o diller bilince mutlaka öğrenmek daha kolay fakat bu sefer öğrenecek kişinin gözünde büyüyüp hiç başlamama ile sonuçlanabiliyor.

Onun için Loi sana önerim.Her hangi bir dille uğraştıysan zaten basit algoritma becerin vardır.Hemen bir c# kitabı alarak en başından itabaren uygulayarak öğrenmendir.

c# öğrendikten sonra diğer .Net dilleri öğrenmende çok kolaylaşacaktır.Çünkü hepsi CLS (Common Language Spesification) kullandığı için birinde yazdığın veya yazacağın program,diğerlerinde(.Net) sorunsuz çalışır.
 

wizz

0
İyinet Üyesi
Katılım
26 Ekim 2007
Mesajlar
136
Reaction score
0
yardımların için teşekkürler gifted.ib kardeş şimdi daha iyi anladım
 

wizz

0
İyinet Üyesi
Katılım
26 Ekim 2007
Mesajlar
136
Reaction score
0
bildiğim birşey olursa tabi ki...
Gifted.ib bu try catch çok güzel işe yarıyor ,,, try ve catch kullanmadan hata engellemesi yapamaz mıyız bi yardımcı olsan kabul etmedi hoca try ve catch i öğrenmek için uğraş adam kabul etmesin ne yapacan başka çare varmı başka yolu öğrenmem gerek :)
 

gifted

0
İyinet Üyesi
Katılım
5 Ocak 2005
Mesajlar
2,122
Reaction score
1
Konum
NeverLand
Kullanıcı int tanımlanmış bir bölüme string girip onayladığı zaman siz try ile yakalamasanızda sistem kendi hata olarak yakalar ve hata verip programı durdurur.

Console ekranlarında kullanıcı giriş yaparken veriyi düzeltme şansı yok.Zaten onayladıktan sonra farklı girmiş ise ya siz hata verdirir,düzeltirsiniz.Yada sistem otomatik olarak kendi hatasını üretir.

Daha öncede belirtmiştim.Hocanın ne yapmaya çalıştığını anlamış değilim.Belki soru biraz daha farklıdır.Yada benim bilmediğim bir şekilde yapılıyordur.
 

wizz

0
İyinet Üyesi
Katılım
26 Ekim 2007
Mesajlar
136
Reaction score
0
tamam hallettim substring() kulllanarak hepsinin sayı olup olmadığına baktım hellettim
 

DincerAydogdu

0
İyinet Üyesi
Onaylı Üye
Katılım
15 Nisan 2005
Mesajlar
1,741
Reaction score
29
Konum
Live in .NET
.NET Framework sürümünüz 2.0 ve üstü ise tryparse kullanarak kontrolü yapabilirsiniz. Altta küçük bir örnek gönderiyorum.

PHP:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("1. Değer");
            string FirstValue = Console.ReadLine();
            Console.WriteLine("2. Değer");
            string SecondValue = Console.ReadLine();
            int ParsedFirstValue;
            int ParsedSecondValue;

            if (int.TryParse(FirstValue, out ParsedFirstValue) && int.TryParse(SecondValue, out ParsedSecondValue))
            {
                Console.Write("Toplam : ");
                Console.WriteLine((ParsedFirstValue + ParsedSecondValue).ToString());
            }
            else {
                Console.WriteLine("Lütfen sayısal değerler giriniz.");
            }
            Console.ReadLine();
        }
    }
}
 

wizz

0
İyinet Üyesi
Katılım
26 Ekim 2007
Mesajlar
136
Reaction score
0
DincerAydogdu kardeş böyle de oluyor tryParse gibi denedim tüm metodları daha nasıl değişik yapabilirim diye
 

turkmale

0
İyinet Üyesi
Katılım
17 Nisan 2003
Mesajlar
237
Reaction score
0
TryParse kullanmak daha mantıklı çünkü exception meydana geldiğinde fazla sistem kaynağı harcıyor.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst