Console.ReadLine()

Dekoracja: dziewczyna czytająca książkę.
Obraz silviarita z Pixabay

Metoda ReadLine() należąca do klasy System.Console jest metodą, bez której prawdopodobnie nie obędzie się żaden program z interfejsem konsolowym. Dzięki niej pobierzemy od użytkownika tekst, który możemy potem wykorzystać w naszym programie.

Metoda zwraca wartość typu string.

string odpowiedzUzytkownika = Console.ReadLine();

Przykładowe zastosowania

Przykładowym zastosowaniem może być pobranie imienia użytkownika do zmiennej.

Console.Write("Podaj imię: ");
string imieUzytkownika = Console.ReadLine();

Console.WriteLine($"Witaj { imieUzytkownika }!");

Kolejnym zastosowaniem może być obsługa menu programu. Załóżmy, że wyświetlamy menu w formie tekstowej, gdzie każdemu wyborowi przypisujemy literkę. Np.:

A. Zmień ustawienia.
B. Przeprowadź obliczenia.
C. Wyjdź z programu.

Poniżej menu możemy wtedy przy pomocy metody Console.Write() zachęcić użytkownika do podania literki odpowiadającej jego wyborowi.

Console.WriteLine("PROGRAM v. 1.0\n");
Console.WriteLine("Menu:");
Console.WriteLine("A. Zmień ustawienia.");
Console.WriteLine("B. Przeprowadź obliczenia.");
Console.WriteLine("C. Wyjdź z programu.\n");
Console.Write("Podaj swój wybór: ");

string wyborEkranu = Console.ReadLine();

Console.Clear();

if (wyborEkranu == "A")
{
	Console.WriteLine("Witaj na ekranie zmiany ustawień.");
}
else if (wyborEkranu == "B")
{
	Console.WriteLine("Witaj na ekranie do przeprowadzania obliczeń.");
}

Console.ReadKey();

Pobieranie innych typów niż string

Dekoracja: czcionki do maszyny do pisania. Wśród nich liczby i litery.
Obraz StockSnap z Pixabay

Niestety nie jesteśmy w stanie zmienić typu jaki zwraca metoda Console.ReadLine(). Zawsze będzie to string. Natomiast to co pobierzemy, możemy przekształcić do innego typu.

Na przykład jeśli chcemy uzyskać int, powinniśmy użyć statycznej metody int.Parse() lub int.TryParse(). Pierwsza opcja jest dużo prostsza.

string wyborEkranuString = Console.ReadLine();
int wyborEkranuInt = int.Parse(wyborEkranu);

Ta wersja zakłada, że użytkownik na pewno wpisze liczbę. Jednak jeśli użytkownik wpisze cokolwiek innego niż liczbę (np. tekst, znak specjalny, spację lub nic nie wpisze) to nasz program zakończy działanie z powodu wyjątku (exception). Dlatego lepiej będzie użyć metody int.TryParse(). Poniżej podaję przykładowy kod z zastosowaniem tej metody, jednak nie będę go omawiał, gdyż nie jest to tematem tego wpisu. Jeśli jesteś zainteresowany wpisem na temat int.TryParse(), daj proszę znać w komentarzu.

Console.WriteLine("PROGRAM v. 1.0\n");
Console.WriteLine("Menu:");
Console.WriteLine("1. Zmień ustawienia.");
Console.WriteLine("2. Przeprowadź obliczenia.");
Console.WriteLine("3. Wyjdź z programu.\n");
Console.Write("Podaj swój wybór: ");

string wyborEkranuString = Console.ReadLine();
int wyborEkranuInt;

Console.Clear();

if (int.TryParse(wyborEkranuString, out wyborEkranuInt))
{
	if (wyborEkranuInt == 1)
	{
		Console.WriteLine("Witaj na ekranie zmiany ustawień.");
	}
	else if (wyborEkranuInt == 2)
	{
		Console.WriteLine("Witaj na ekranie do przeprowadzania obliczeń.");
	}
}
else
{
	Console.WriteLine("Podano nieprawidłową opcję menu.");
}

Console.ReadKey();

Jeśli chodzi o inne typy liczbowe, w większości przypadków przekonwertujemy string do typu liczbowego praktycznie tak samo jak w przypadku inta.

int wyborEkranuInt = int.Parse(wyborEkranuString);
float wyborEkranuFloat = float.Parse(wyborEkranuFloat);
double wyborEkranuDouble = double.Parse(wyborEkranuString);
decimal wyborEkranuDecimal = decimal.Parse(wyborEkranuString);

W przypadku chara sprawa ma się nieco inaczej.

char wyborEkranuChar = wyborEkranuString.ToCharArray()[0];

Powyższa opcja to tak naprawdę wyciągnięcie pierwszego znaku z naszego stringa. Oczywiście jeśli string ma jeden znak, to dokładnie ten jeden znak zostanie zwrócony do naszej zmiennej. Niestety jeśli użytkownik nie wpisze w okienko nic i zatwierdzi to enterem, to program zakończy swoje działanie wyjątkiem.

Praktyczny przykład działania

Aby sprawdzić jak można wykorzystać metodę Console.ReadLine() w prawdziwym programie, zapraszam do obejrzenia mojego odcinka kursu C# od zera.

I to by było na tyle 🙂 Jeśli jesteś zainteresowana lub zainteresowany większą ilością informacji na ten temat, koniecznie daj znać w komentarzu. Pozdrawiam serdecznie 🙂

Dodaj komentarz