Gość utworzono 16 maja 2015 utworzono 16 maja 2015 Witam! Od niedawna zacząłem się interesować programowaniem. Chcąc się nauczyć C# sięgnąłem do kursu pod tym adresem:http://kurs-c-sharp.cba.pl/?page_id=2 Pytanie teraz o instrukcję switch() . Pisząc, lub przekopiowując ją z kursu ( http://kurs-c-sharp.cba.pl/?page_id=82 ) zawszę nie mogę osiągnąć tego co powinno być. Otóż gdy mam taki program: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication4 { class Program { static void Main(string[] args) { int lb; Console.Write("Podaj liczbę: "); lb = Console.Read(); switch (lb) { case 0: Console.WriteLine("Twoja liczba to 0!"); break; case 1: Console.WriteLine("Twoja liczba to 1!"); break; case 2: Console.WriteLine("Twoja liczba to 2!"); break; case 3: Console.WriteLine("Twoja liczba to 3!"); break; default: Console.WriteLine("Podałeś za dużą liczbę!"); break; } Console.ReadLine(); } } } po wprowadzeniu liczby zawsze pisze "Podałeś z dużą liczbę!" i natychmiast zamyka się, jakby nie było ostatniego polecenia Console.ReadLine(); Proszę o pomoc! Dodam, że próbowałem w Visual Studio Express 2013 i Visual C# 2010 Express.
Rekomendowana odpowiedź rafalluz komentarz 16 maja 2015 Rekomendowana odpowiedź komentarz 16 maja 2015 (edytowane) Dlatego, że Console.Read() zwraca kod znaku ASCII wczytanego, a nie wartość liczbową. Tym samym tokiem możesz wpisać 'a', 'b' itd. Wartość liczbową musisz sobie odpowiednio skonwertować. Zobacz sobie na tabele ASCII, sprawdź kody dla cyfr i będziesz wiedział, jak. Ewentualnie przedebugguj i zobacz, co siedzi we wczytanej zmiennej.
Gość komentarz 17 maja 2015 komentarz 17 maja 2015 (edytowane) Dlatego, że Console.Read() zwraca kod znaku ASCII wczytanego, a nie wartość liczbową. Tym samym tokiem możesz wpisać 'a', 'b' itd. Wartość liczbową musisz sobie odpowiednio skonwertować. Zobacz sobie na tabele ASCII, sprawdź kody dla cyfr i będziesz wiedział, jak. Ewentualnie przedebugguj i zobacz, co siedzi we wczytanej zmiennej. A czy mógłbyś mi wytłumaczyć to jakoś jaśniej. Na razie jestem zielony w programowaniu. Rozumiem, że Console.Read() zwraca kod znaku(np dla 1 jest to ^A). Sprawdzając to i wpisując wartość wcześniej podanej 1 w ASCII(czyli ^A) program wykonał czynność którą chciałem(napisał "Twoja liczba to 1!" ). Nie rozumiem tylko jak ją skonwertować. Tabelę brałem stąd: https://msdn.microsoft.com/en-us/library/60ecse8t%28v=vs.80%29.aspx Z góry dzięki :)
rafalluz komentarz 17 maja 2015 komentarz 17 maja 2015 (edytowane) Ale czego nie rozumiesz? Tabelę kodów znalazłeś, i z niej wynika, jaki masz kod, jak np. wpiszesz 0. No to skoro masz taki, a nie inny kod, to jak w switchu ma wejść 0? Ustaw sobie breakpointa, i debugguj. Stawianie breakpointa w bieżącej linii to F9, przechodzenie pomiędzy linijkami to F10. Najeżdżając myszką na zmienną możesz podejrzeć jej wartość.
Gość komentarz 17 maja 2015 komentarz 17 maja 2015 Ale czego nie rozumiesz? Tabelę kodów znalazłeś, i z niej wynika, jaki masz kod, jak np. wpiszesz 0. No to skoro masz taki, a nie inny kod, to jak w switchu ma wejść 0? Ustaw sobie breakpointa, i debugguj. Stawianie breakpointa w bieżącej linii to F9, przechodzenie pomiędzy linijkami to F10. Najeżdżając myszką na zmienną możesz podejrzeć jej wartość. No tak, ale jak zrobić konwersję z ASCII na int. Jak będę wprowadzał 0(zero) do programu jako zmienną to program później w switch odczytał to jako wartość int i wykonał czynności jakie powinny być. Może nie rozumiem jakiejś kuriozalnej sprawy, ale proszę o wyjaśnienie.
rafalluz komentarz 17 maja 2015 komentarz 17 maja 2015 Pomyśl. To proste. Wszystkie potrzebne dane już masz. Wykonaj kroki, które podałem wcześniej, jeśli tego jeszcze nie widzisz.
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.