Nighthawk.dk

Grundlæggende C#: Input og type-konvertering

Skrevet d. 11. May 2022 af Claus Nielsen.

Programmer brug for en eller anden form for input for at være interessante.

Her ser vi på hvordan man kan få input via konsollen, og konvertere det til brugbar data.

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);
Bemærk: Type-konvertering kan fejle

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();.

Opgave 6

Udvid programmerne du skrev til opgave 4 og 5, således at brugeren kan indtaste værdierne til radius og kateterne.

Opgave 7

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.

Relaterede ressourcer
C# Grundbog

Niels Hilmar Madsen og Michell Cronberg,
Libris, 2003

×