Input og type-konvertering
Et program uden nogen form for input er ikke særlig interessant, så lad os se på hvordan du får input fra konsollen:
Til dette skal du bruge Console.ReadLine
, der læser en linie fra konsollen (dvs. indtil du trykker på Enter).
Console.ReadLine
giver dig en tekststreng (som har typen string
), og du kan derfor gemme denne tekststreng i en variabel af typen string
.
Variabler af typen string
anses for at være tekst, også selvom tekststrengen kun indeholder et tal.
Det vil med andre ord sige, at variablen string et_tal = "5";
anses for at være tekst, og ikke et tal,
fordi variabel-typen er string
(bemærk også at værdier af typen string
angives i anførselstegn).
Hvis du har et tal opbevaret i en string
, kan du konvertere det til en anden type med funktioner som f.eks. Convert.ToInt32
(for at konvertere til int
)
eller Convert.ToDouble
(for at konvertere til double
).
Bemærk at du også kan bruge disse konverterings-funktioner til at konvertere mellem andre typer, du kan f.eks. lave en double
om til en int
.
Her er et eksempel, der viser hvordan du kan få input fra brugeren, og konvertere det til et heltal:
Console.WriteLine("Indtast et heltal:"); // Indlæs input fra konsol til en tekst-variabel string input = Console.ReadLine(); // Konverter tekst til heltal int tal = Convert.ToInt32(input); Console.WriteLine("Det indlæste tal var: {0}", tal);
Hvis du prøver at lave en type-konvertering som i eksemplet ovenfor, risikerer du at få en fejl (f.eks. hvis der ikke indtastes et gyldigt tal).
For at kunne reagere på en sådan fejl skal du bruge såkaldt undtagelses-håndtering (exception handling); det er et emne som vi ikke kommer nærmere ind på her, men følgende eksempel illustrerer hvordan det kan bruges (i sin simpleste form):
int tal = 0; try { tal = Convert.ToInt32(input); } catch { Console.WriteLine("Kunne ikke konvertere til et heltal!"); }
Du kan konvertere alle variabel-typer til en string
ved at bruge ToString
-metoden:
hvis a
er en variabel (uanset typen) kan du skrive string a_som_string = a.ToString();
.
Udvid programmerne du skrev til opgave 4 og 5, således at brugeren kan indtaste værdierne til radius og kateterne.
Lav en variabel af typen double
og giv den en værdi.
Konvertér den til typen decimal
, og derfra videre til en string
.
Konvertér din string
tilbage til en double
, og tjek at du får den værdi du startede med.
Bemærk: Der kan være såkaldte "numeriske usikkerheder" som gør at du ikke får præcis hvad du startede med, men forskellen skal være ubetydeligt lille.