Program się wysypuje przy próbie konwersji z typu string na double.

0

Przy wpisaniu liczby całkowitej nie ma problemów, jednak gdy do konsoli wprowadzam liczbę z wartością po przecinku program się wysypuje i daje taki oto komunikat:

"An unhandled exception of type 'System.FormatException' occurred in mscorlib.dll

Additional information: Nieprawidłowy format ciągu wejściowego."

A tutaj jest kod:

      static void Main(string[] args)
        {
                Console.WriteLine("Podaj wagę");
                double a = int.Parse(Console.ReadLine());
                Console.WriteLine("Podaj wzrost");
                double b = int.Parse(Console.ReadLine());
            

            double BMI = a * (b * b);
            Console.WriteLine(BMI);
            Console.ReadKey();
          
   }
1

Nie pamietam za wiele z C#, ale w oczy rzuca sie niekonsekwencja:

 double a = int.Parse(Console.ReadLine()); 

parsujesz oczekując inta, a chcesz doubla?

0

Racja. Małe przeoczenie, jednak to nie to powoduje błąd przy konwersji.

0
Console.WriteLine("Podaj wagę");
                double a = double.Parse(Console.ReadLine());
                Console.WriteLine("Podaj wzrost");
                double b = double.Parse(Console.ReadLine());
 
 
            double BMI = a * (b * b);
            Console.WriteLine(BMI);
            Console.ReadKey();
 

Tak sobie zmień kod i w c# "po przecinku" to tak naprawdę "po kropce" zamiast podawać "5,5" podaj "5.5" dla przykładu.

0

Problem rozwiązany. Wpisywałem cały liczby dziesiętne używając kropki przez co kompilator traktował wyrzucał błąd. Przy użyciu przecinka wszystko działa jak należy.

Przepraszam za śmieciowy wątek.

0

@tywin_lennister, kompilator nie wyrzucał żadnego błędu. Jeśli kompilator wyrzuca błędy, to aplikacja się w ogóle nie kompiluje, a więc i nie uruchamia. Ty miałeś problem z już uruchomioną aplikacją. Naucz się odróżniać te dwie rzeczy, bo faktyczne źródło problemu jest bardzo ważne w programowaniu.

I generalnie warto znać kulturę swojego kraju, w Polsce separatorem dziesiętnym jest przecinek, nie wierzę, żeby w szkole kiedykolwiek uczyli pisać ułamki dziesiętne z kropką.

1 użytkowników online, w tym zalogowanych: 0, gości: 1