String beolvasása
A konzol programokban lehetőség van a felhasználótól adatot bekérni. Neki ekkor azt be kell írnia a billentyűzet segítségével, és a végén le kell ütnie az Enter billentyűt.
Az adatbevitelre a Console.ReadLine() függvény szolgál. Paramétere nincs, és a visszaadott értéke minden esetben szöveg (string) típusú.
Pl.:
Console.Write(”Írd be a neved:”);
string nev = Console.ReadLine();
Console.WriteLine(”Üdvözöllek, kedves {0}”,nev);
Egész számok beolvasása
A konzol programokban lehetőség van a felhasználótól adatot bekérni. Erre a Console.ReadLine()függvény szolgál. Paramétere nincs, és a visszaadott értéke minden esetben szöveg (string) típusú.
Amennyiben nem szöveget, hanem egész szám értéket kell beolvasni, úgy a string típusú adatot át kell alakítani számmá. Ez nem típuskonverziós kérdés, mivel sem implicit, sem explicit típuskonverzió nem létezik string -> int irányban.
Az átalakításhoz használható a Convert osztály megfelelő függvénye. Int esetén:
Console.Write(”Írj be egy egész számot:”);
string s = Console.ReadLine();
int x = Convert.ToInt32( s );
illetve magának az Int32 osztálynak is van Parse() függvénye, amely képes string-ből a benne tárolt számot átalakítani egész értékké:
Console.Write(”Írj be egy egész számot:”);
string s = Console.ReadLine();
int x = Int32.Parse( s );
Mindkét függvénynél vigyázni kell. Amennyiben az átalakítás nem kivitelezhető (pl. a felhasználó azt írja be: ”alma”), akkor kivételt fognak generálni.
Valós számok ismertetése
A konzol programokban lehetőség van a felhasználótól adatot bekérni. Erre a Console.ReadLine() függvény szolgál. Paramétere nincs, és a visszaadott értéke minden esetben szöveg (string) típusú.
Amennyiben nem szöveget, hanem valós szám értéket kell beolvasni, úgy a string típusú adatot át kell alakítani számmá. Ez nem típuskonverziós kérdés, mivel sem implicit, sem explicit típuskonverzió nem létezik string -> double irányban.
Az átalakításhoz használható a Convert osztály megfelelő függvénye. Double esetén:
Console.Write(”Írj be egy valós számot:”);
string s = Console.ReadLine();
double x = Convert.ToDouble( s );
illetve magának a Double osztálynak is van Parse() függvénye, amely képes string-ből a benne tárolt számot átalakítani valós értékké:
Console.Write(”Írj be egy valós számot:”);
string s = Console.ReadLine();
double x = Double.Parse( s );
Mindkét függvénynél vigyázni kell. Amennyiben az átalakítás nem kivitelezhető (pl. a felhasználó azt írja be: ”alma”), akkor kivételt fognak generálni.
Karakter beolvasása
A konzol programokban lehetőség van a felhasználótól adatot bekérni. Erre a Console.ReadLine() függvény szolgál. Paramétere nincs, és a visszaadott értéke minden esetben szöveg (string) típusú.
Amennyiben nem szöveget, hanem karakter értéket kell beolvasni, úgy a string típusú adatot át kell alakítani karakterré. Ez nem típuskonverziós kérdés, mivel sem implicit, sem explicit típuskonverzió nem létezik string -> karakter irányban.
Az átalakításhoz használható a Convert osztály megfelelő függvénye. Karakter esetén:
Console.Write(”Írj be egy valós számot:”);
string s = Console.ReadLine();
char x = Convert.ToChar( s );
illetve magának a karakter osztálynak is van Parse() függvénye, amely képes string-ből a benne tárolt adatot karakter típusúvá átalakítani:
Console.Write(”Írj be egy valós számot:”);
string s = Console.ReadLine();
char x = Char.Parse( s );
Mindkét függvénynél vigyázni kell. Amennyiben az átalakítás nem kivitelezhető (pl. a felhasználó által beírt szöveg nem 1 karakter hosszú), akkor kivételt fognak generálni.
Logikai érték beolvasása I
A konzol programokban lehetőség van a felhasználótól adatot bekérni. Erre a Console.ReadLine() függvény szolgál. Paramétere nincs, és a visszaadott értéke minden esetben szöveg (string) típusú.
Amennyiben nem szöveget, hanem logikai értéket kell beolvasni, úgy a string típusú adatot át kell alakítani logikai típusúvá. Ez nem típuskonverziós kérdés, mivel sem implicit, sem explicit típuskonverzió nem létezik string -> bool irányban.
Az átalakításhoz használható a Convert osztály megfelelő függvénye. bool esetén:
Console.Write(”Írj be egy logikai értéket (true/false):”);
string s = Console.ReadLine();
bool x = Convert.ToBool( s );
illetve magának a bool osztálynak is van Parse() függvénye, amely képes string-ből a benne tárolt értéket logikai típusúvá alakítani:
bool x = Bool.Parse( s );
Mindkét függvénynél vigyázni kell. Amennyiben az átalakítás nem kivitelezhető (a függvények csak a true/false szavakat értik meg), akkor kivételt fognak generálni.
Logikai érték beolvasása II
A konzol programokban lehetőség van a felhasználótól adatot bekérni. Erre a Console.ReadLine() függvény szolgál. Paramétere nincs, és a visszaadott értéke minden esetben szöveg (string) típusú.
Amennyiben nem szöveget, hanem logikai értéket kell beolvasni, úgy a string típusú adatot fel kell dolgozni:
Console.Write(”Írj be egy logikai értéket (igaz/hamis):”);
string s = Console.ReadLine();
bool x = false;
if (s.ToUpper()==”IGAZ”) x = true;
vagy használhatjuk a switch szerkezetet:
string s = Console.ReadLine();
bool x;
switch(s.ToUpper())
{
case ”IGAZ”: x=true;break;
case ”HAMIS”: x=false;break;
default: Console.WriteLine(”A beírt szó nem IGAZ vagy HAMIS volt!”);break;
}
Enum beolvasása I
Egy enum típusú változó értékét nem egyszerű beolvasni a billentyűzetről. Ennek legfontosabb oka, hogy a Console.ReadLine() egy string-et ad vissza.
enum eletkorok { csecsemo, gyerek, serdulo, felnott };
eletkorok X;
X = Console.ReadLine();
... értékadás típushibás, mivel egy enum típusú változónak (X) nem lehet egy string-et értékül adni.
Megoldás: a switch alkalmazása:
string s=Console.ReadLine();
switch(s)
{
case ”csecsemo”: X=eletkorok.csecsemo;break;
case ”gyerek” : X=eletkorok.gyerek; break;
case ”serdulo” : X=eletkorok.serdulo; break;
case ”felnott” : X=eletkorok.felnott; break;
}
Ez a megoldás nem rugalmas - ha újabb lehetséges értékkel bővítjük az eletkorok típust, akkor újabb case ágat kell írnunk.
Lehetőség van a default ággal egyszerűen kezelni az „egyéb” eseteket:
switch(s)
{
...
case ”felnott”: X=eletkorok.felnott; break;
default: Console.WriteLine(”nem jó érték!”);break;
}
Enum beolvasása II
Egy enum típusú változó értékét nem egyszerű beolvasni a billentyűzetről. Ennek legfontosabb oka, hogy a Console.ReadLine() egy string-et ad vissza.
enum eletkorok { csecsemo, gyerek, serdulo, felnott };
eletkorok X;
X = Console.ReadLine();
... értékadás típushibás, mivel egy enum típusú változónak (X) nem lehet egy string-et értékül adni.
Megoldás: az Enum.Parse használata.
string s=Console.ReadLine();
X = (eletkorok)Enum.Parse(typeof(eletkorok),s);
Ez a megoldás tökéletesen rugalmas, ha újabb lehetséges értékkel bővítjük az eletkorok típust (pl. ’nyugdijas’), akkor ez a sor máris fogja kezelni az újabb esetet is.
Viszont ha az s értéke nem a szóba jöhető konstansnevek közül valamelyik, akkor itt futás közbeni hibát fogunk tapasztalni.
Dátum és Idő beolvasása
A konzol programokban lehetőség van a felhasználótól adatot bekérni. Erre a Console.ReadLine() függvény szolgál. Paramétere nincs, és a visszaadott értéke minden esetben szöveg (string) típusú.
Amennyiben nem szöveget, hanem dátum értéket kell beolvasni, úgy a string típusú adatot fel kell dolgozni.
Az átalakításhoz használható a Convert osztály megfelelő függvénye:
Console.Write(”Írj be egy dátumot (hh/nn/eeee formában):”);
string s = Console.ReadLine();
DateTime x = Convert.ToDateTime( s );
illetve magának a DateTime osztálynak is van Parse() függvénye, amely képes string-ből a benne tárolt értéket átalakítani dátummá:
Console.Write(”Írj be egy dátumot (hh/nn/eeee formában):”);
string s = Console.ReadLine();
DateTime d = DateTime.Parse( s );
Mindkét függvénynél vigyázni kell. Amennyiben az átalakítás nem kivitelezhető (pl. a felhasználó azt írja be: ”alma”), akkor kivételt fognak generálni.