• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kontrola błędów przy wprowadzaniu z klawiatury

Object Storage Arubacloud
+1 głos
199 wizyt
pytanie zadane 13 listopada 2015 w C# przez Tomek Krupa Użytkownik (820 p.)

Hej :)

Mam pytanie czy instnieje jakaś funkcja w C# do kontroli błędów przy wprowadzaniu danych z klawiatury? 
Chodzi mi o to że przy takim zapisie: 

waga = double.Parse(Console.ReadLine());

gdy wpiszę zamiast liczby np. litery to program się wysypuję. domyślam się że można by utworzyć zmienną pomocniczą i sprawdzić czy wprowadzono cyfrę czy nie i dopiero przypisać do zmiennej, ale coś przeczuwam że jest prostrzy sposób, tylko go nie znam :<

 

4 odpowiedzi

+1 głos
odpowiedź 13 listopada 2015 przez furas Maniak (53,800 p.)

Zastosuj TryParse aby zamiast błędu uzyskać wynik null

https://msdn.microsoft.com/pl-pl/library/3s27fasw(v=vs.110).aspx

Lub użyj try/catch aby przechwycić błąd i jakoś na niego zareagować.

https://msdn.microsoft.com/pl-pl/library/0yd65esw.aspx

komentarz 13 listopada 2015 przez Tomek Krupa Użytkownik (820 p.)
o to to to!
Dziękuję :)
komentarz 14 listopada 2015 przez Tomek Krupa Użytkownik (820 p.)
if (double.TryParse(Console.ReadLine(), out waga)) 
Console.WriteLine("Waga: {0}", waga);
else
Console.WriteLine("Proszę wprowadzić liczbę!");

 

Tak poprawiony kod działa poprawnie :)

+1 głos
odpowiedź 13 listopada 2015 przez Dorion300 Szeryf (90,250 p.)

Zainteresuj się try/catch.

One pozwalają wyłapać błedy i sprawdzić w catch dokładniej w czym problem.

https://msdn.microsoft.com/pl-pl/library/0yd65esw.aspx

0 głosów
odpowiedź 13 listopada 2015 przez ScriptyChris Mędrzec (190,190 p.)

Parsujesz na typ double, więc program "oczekuje" tam liczby, którą przekształci na zmiennoprzecinkową. Gdy podajesz literę, to może się wysypuje, bo nie można przekształcić litery w liczbę - chyba że przez tabelę ASCII na przykład. Tak na chłopski rozum - bo nie znam C#.

komentarz 13 listopada 2015 przez Tomek Krupa Użytkownik (820 p.)
no wiem :P chodzi mi o sposób uniknięcia tego, jak utworzyć kod który wyrzucił by na ekran komunikat z błędem.
nie wiem jak przechwycić błąd wykonania tej funkcji
komentarz 13 listopada 2015 przez ScriptyChris Mędrzec (190,190 p.)

Pewnie try-catch w tym by pomógł. Ale może spróbuj tak:

if (Console.Readline() == String()) system.log("To nie jest liczba");

Traktuj to jako pseudo kod, bo nie znam C#. CHodzi o to, aby w if podać warunek, że jeśli to co wpiszesz będzie typu String, albo Char - to niech wyświetli komunikat.

komentarz 13 listopada 2015 przez Dorion300 Szeryf (90,250 p.)

@Krzycho92

Aby sprawdzić czy typ zwracany to string to trzeba if(Metoda is String)....

Nie ma metody string() w C#...

Console.Readline() zawsze zwraca string.

System.Log?

komentarz 13 listopada 2015 przez ScriptyChris Mędrzec (190,190 p.)

Spoko, nie znam C#. Ale napisałem jak to można sprawdzić - ogólnie:

CHodzi o to, aby w if podać warunek, że jeśli to co wpiszesz będzie typu String, albo Char

0 głosów
odpowiedź 13 listopada 2015 przez katolik6 Dyskutant (8,140 p.)
nie programowałem w c#, więc funkcji nie dam, ale każda cyfra ma kod z przedziału 48-57.

Usuń pozostałe i sprawdź, czy łańcuch jest pusty.
komentarz 13 listopada 2015 przez Dorion300 Szeryf (90,250 p.)
A nie prościej wyłapać wyjątek?
Po w C# wszystko już sprawdzane, i jeśli w metodzie napotka jakieś niepowodzenie to wywala wyjątek.
Ten wyjątek można wyłapać za pomocą try/catch.
twój sposób jest zasobożernym procesem po tak jakby robimy tą samą czynność dwa razy.
Wyjątki w C# są bardzo potężne.
komentarz 14 listopada 2015 przez katolik6 Dyskutant (8,140 p.)
Jak mówiłem nie używałem C#, dlatego nie wiedziałem, że wywali wyjątek.

Podobne pytania

0 głosów
1 odpowiedź 141 wizyt
0 głosów
1 odpowiedź 256 wizyt
pytanie zadane 26 listopada 2015 w C# przez Michał628496 Pasjonat (17,340 p.)
+1 głos
0 odpowiedzi 108 wizyt
pytanie zadane 19 kwietnia 2017 w C# przez dasad33 Użytkownik (710 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...