SammenligningTall/SjekkEtTall/Program.cs

116 lines
4.0 KiB
C#

using System;
using System.Text;
namespace SammenligneTallMellomToAndreTall
{
class Program
{
static void Main(string[] args)
{
// Valgfritt - Eksisterer kun for at "æ, ø, å" vises i konsollvinduet riktig.
Console.OutputEncoding = Encoding.UTF8;
// Skriver ut melding og leser input
Console.WriteLine("Skriv inn et tall:");
while (true)
{
var input = Console.ReadLine();
// Prøver å konvertere input fra tekst til desimaltall
double number;
bool validNumber = double.TryParse(input, out number);
/**
* Sjekker om input er en av følgende:
* - IKKE et gyldig desimaltall
* - Lavere enn 5
* - Høyere enn 54.99
*
* Om ett av disse tilfellene er "true", starter den loopen (programmet) på nytt
* UTEN å gå videre i programmet.
*/
if (!validNumber || number < 5 || number > 54.99)
{
Console.WriteLine($"Ugyldig nummer: {input} - Prøv igjen.");
// Starter while-loopen på nytt.
continue;
}
// Skriver ut "input"-tallet
Console.WriteLine($"Nummeret du skrev inn er: {number}");
Console.ReadLine();
// Avslutter "while"-loopen
// Kan alternativt bruke en do/while med et satt bool og endret dette.
// Har laget et enkelt eksempel et par linjer lenger ned.
break;
}
// Samme eksempel med do/while
// Sett en standard verdi slik at do/while starter og fortsetter som forventet.
bool ugyldigTall = true;
do
{
var input = Console.ReadLine();
// Prøver å konvertere input fra tekst til desimaltall
double number;
bool validNumber = double.TryParse(input, out number);
/**
* Sjekker om input er en av følgende:
* - IKKE et gyldig desimaltall
* - Lavere enn 5
* - Høyere enn 54.99
*
* Om ett av disse tilfellene er "true", starter den loopen (programmet) på nytt
* UTEN å gå videre i programmet.
*/
if (!validNumber || number < 5 || number > 54.99)
{
Console.WriteLine($"Ugyldig nummer: {input} - Prøv igjen.");
// Starter while-loopen på nytt.
continue;
}
// Skriver ut "input"-tallet
Console.WriteLine($"Nummeret du skrev inn er: {number}");
Console.ReadLine();
// Avslutter "do/while"-loopen
ugyldigTall = false;
} while (ugyldigTall);
// Alternativ 3:
// Noe lignende Morten sin metode.
var gjeldendeTall = 0.0;
do
{
Console.WriteLine("Skriv inn et tall:");
/**
* double.Parse() kan feile om den ikke klarer å konvertere
* tekst til en 'double'. Dette gjør basic error handling og tillatter koden
* til å fortsette selv om programmet ikke får til å konvertere tallet.
*/
try
{
gjeldendeTall = double.Parse(Console.ReadLine());
}
catch (Exception ex)
{
// Ignorer exception og gå videre.
// Selvfølgelig bør dette egentlig logges, men hvem gidder det
continue;
}
} while (gjeldendeTall < 5 || gjeldendeTall > 54.99);
Console.WriteLine($"Dette tallet er gyldig: {gjeldendeTall}");
}
}
}