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

C# Zabezpieczenie strumienia wejścia przed błędnym wprowadzaniem danych.

42 Warsaw Coding Academy
0 głosów
2,062 wizyt
pytanie zadane 22 listopada 2016 w C# przez Masciuch Nowicjusz (120 p.)

Witam, a więc chcę zrobić proste działanie matematyczne w języku C#, lecz nie mam pomysłu i nigdzie nie znalazłem jak zabezpieczyć strumień wejścia przed błędnymi danymi. 
Mam zadeklarowaną zmienną l1 jako int i jeśli zostanie tam wpisana literka to żeby program się nie wysypał tylko wyskoczył komunikat do użytkownika o błędnej wartości.

using System;


namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int l1;
            int l2;
            

            Console.Write("Podaj 1 liczbe: ");
            l1 = Convert.ToInt32( Console.ReadLine());
            Console.Write("Podaj 2 liczbe: ");
            l2 = Convert.ToInt32(Console.ReadLine());

            if (( l1 != int32 ) || ( l2 != int32 ))
            {
                   Console.WriteLine("Nieprawidłowa wartość.. Podaj liczbę !");
                
            }
            else
            {
           
                  if (l2 == 0)
                      {
                           Console.WriteLine("Nie dziel przez 0");
                       }
                else
                      {
                          Console.WriteLine("Iloraz: " + (l1 / l2));
                          Console.WriteLine("Reszta z dzielenia to: " + (l1 % l2));
                       }
             }
            Console.ReadKey();
           


        }
    }
}

 

3 odpowiedzi

+2 głosów
odpowiedź 28 września 2017 przez Dofosh Obywatel (1,480 p.)
            int i = 0;
            if (int.TryParse(Console.ReadLine(), out i)) { }
            else
            {
                Console.WriteLine("Musisz podać liczbę");
            }

 

+1 głos
odpowiedź 22 listopada 2016 przez pulson666 Stary wyjadacz (12,560 p.)
Oczywiście, jak ktoś wpiszę literkę to wyrzuci wyjątek dlatego poszukaj info na temat try catch
komentarz 11 grudnia 2016 przez Masciuch Nowicjusz (120 p.)
Poszukałem i znalazłem. Dzięki :)
+1 głos
odpowiedź 28 listopada 2016 przez KSYMEK Gaduła (3,280 p.)
using System;

namespace ConsoleApplication1 {

    class Program {
        static void Main(string[] args) {
            Start:
            int l1;
            int l2;

            try {
                Console.Write("Podaj 1 liczbe: ");
                l1 = Convert.ToInt32(Console.ReadLine());
                Console.Write("Podaj 2 liczbe: ");
                l2 = Convert.ToInt32(Console.ReadLine());
            }
            catch (FormatException exception) {
                Console.WriteLine("Musisz podać liczbe!");
                goto Start;
            }

            if (l2 == 0) {
                Console.WriteLine("Nie dziel przez 0");
            }
            else {
                Console.WriteLine("Iloraz: " + (l1/l2));
                Console.WriteLine("Reszta z dzielenia to: " + (l1%l2));
            }

            Console.ReadKey();
        }
    }

}

 

komentarz 11 grudnia 2016 przez Masciuch Nowicjusz (120 p.)
Dokładnie tak to zastosowałem. Dzięki za chęci :)
komentarz 28 września 2017 przez NowyUrzydgownig Mądrala (5,090 p.)
nie używaj goto.

Podobne pytania

0 głosów
0 odpowiedzi 341 wizyt
pytanie zadane 10 listopada 2023 w C i C++ przez filip142 Nowicjusz (120 p.)
+1 głos
3 odpowiedzi 1,020 wizyt
+1 głos
1 odpowiedź 236 wizyt

93,395 zapytań

142,388 odpowiedzi

322,566 komentarzy

62,753 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...