x-kom hosting

Początki w C# - switch()

Przejdź do rekomendowanej odpowiedzi Autor: rafalluz ,
Gość
utworzono
utworzono

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
komentarz (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
komentarz (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
komentarz (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
komentarz

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
komentarz

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.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.